0

我正在做一些关于 android DiffUtil 的事情,我想让它成为通用的。我想在创建类 A 时传递 getter 函数(itemGetter),但是当我在构造函数中声明 itemGetter 的类型时。我不知道如何声明它。()->V 不正确。因为我不能做像 item.itemGetter() 这样的事情 Class 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]

    }
}

因为我们检查了 itemsTheSame 需要比较模型 T 中的名称或 ID 或某些实例,因此,我需要将模型 T 中的 getter 作为函数传递给 DiffCallBackUtil。因此,我可以调用oldList[oldi].getName()===newList[newi].getName()

4

0 回答 0