android - Collections.sort 的比较函数在 Kotlin 中需要一个 Int 类型的值
问题描述
在代码中:
Collections.sort(activities, Comparator<ResolveInfo> {
fun compare(a: ResolveInfo, b: ResolveInfo): Int {
var pm = activity!!.packageManager
return String.CASE_INSENSITIVE_ORDER.compare(a.loadLabel(pm).toString(), b.loadLabel(pm).toString())
}
})
编译器告诉我“类型不匹配:必需的 Int”。
但它不是返回一个int吗?
我究竟做错了什么?谢谢!
解决方案
实际上解决方案很简单——为了创建某个接口类的对象,object
之前需要一个关键字Comparator
,如下所示:
Collections.sort(activities, object: Comparator<ResolveInfo> {
fun compare(a: ResolveInfo, b: ResolveInfo): Int {
var pm = activity!!.packageManager
return String.CASE_INSENSITIVE_ORDER.compare(a.loadLabel(pm).toString(), b.loadLabel(pm).toString())
}
})
有关更多信息,请查看对象表达式和声明
推荐阅读
- python - 散景水平堆积条形图
- javascript - 如何使用 selenium webdriver 转储整个 dom 结构
- c# - 尝试将二维数组写入 .csv 并且并非所有单元格都被复制
- python - 由于工作人员失去联系,Google Cloud Dataflow 在组合功能中失败
- kotlin - apachestorm:如何转换(制作一个新的)元组
- r - 使用 grepl 子集数据中的正则表达式异常
- javascript - 通过 JavaScript 创建时内联块元素的行为不一致
- java - 如何在 Java 8 中查找列表的所有元素是否都在一个集合中?
- vba - 在不使用 SendKeys 的情况下取消选择 Excel 中的活动图表对象
- php - 如何对这个 try catch 进行单元测试