阅读有关SAM转换的Java互操作文档后,我期望Kotlin函数可以使用lambda函数而无需显式指定参数作为Comparator。然而,以下代码出现了“类型推断失败”:
Collections.sortWith(comparator: kotlin.Comparator<in T> /* = java.util.Comparator<in T> */)
。val someNumbers = arrayListOf(1, 5, 2)
someNumbers.sortWith({ x, y -> 1 })
鉴于:
val someNumbers = arrayListOf(1, 5, 2)
someNumbers.sortWith(Comparator { x, y -> 1 })
编译并正确运行
Collections.sort(arrayList, { x, y -> 1 })
是可行的。 - leonardkraemersortWith
接受一个类型为comparator: (T, T) -> Int
的比较器,那么就不需要指定Comparator
了...但是我现在不知道该怎么处理这个信息;-) 而且那样其实也帮不上太多忙,因为我们在sortedWith
中仍然需要使用Collections.sort.(this) { x, y -> comparator(x, y) }
。(我只是在胡思乱想) - Roland