Функция сравнения коллекций. Ожидаемое значение типа Int в Kotlin - PullRequest
1 голос
/ 04 ноября 2019

В коде:

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?

Что я делаю не так? Спасибо!

1 Ответ

1 голос
/ 04 ноября 2019

На самом деле решение довольно простое - для создания объекта некоторого класса интерфейса требуется ключевое слово 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())
        }
    })

Для получения дополнительной информации, пожалуйста, отметьте Выражения и объявления объектов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...