有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓 Java Kotlin泛型将类getter作为参数传递到函数中

我正在做一些关于安卓 DiffUtil的事情,我想让它变得通用。我想在创建类A时传递getter函数(itemGetter),但在构造函数中声明itemGetter的类型时传递。我不知道怎么申报。()->;V是不正确的。因为 我不能做类似的事情。itemGetter() T类是关于一个有itemGetter的类

class T() {
    val item = ....
    
    fun itemGetter(): String {
        return this.item
    }
}


class A<T,V>(var item1 :T , var item2:T ,var itemGetter: ()->V){
    fun comparing(item1: T,item2:T): Boolean {
        return item1.itemGetter()===item2.itemGetter()
    }
}

谢谢

更新特定示例

class DiffCallBackUtil<T>(var oldList: ArrayList<T>, var newList: ArrayList<T> ) : DiffUtil.Callback() {


   override fun areItemsTheSame(oldi: Int, newi: Int): Boolean {
        return oldList[oldi] === newList[newi]

    }
}

因为我们检查的是相同的项目,需要比较名称或id或 因此,我需要将模型T中的getter as函数传递给DiffCallBackUtil。 因此,我可以调用oldList[oldi].getName()===newList[newi].getName()


共 (0) 个答案