首页 > 解决方案 > 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吗?

我究竟做错了什么?谢谢!

标签: androidkotlin

解决方案


实际上解决方案很简单——为了创建某个接口类的对象,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())
        }
    })

有关更多信息,请查看对象表达式和声明


推荐阅读