Как использовать существующие компараторы в Котлине - PullRequest
0 голосов
/ 11 июня 2018
@Suppress("UNCHECKED_CAST")
val comp = Integer::compare as Comparator<Int>

Результат:

java.lang.ClassCastException:
org.organicdesign.fp.xform.TransformableTest$testToImSortedSet$comp$1
cannot be cast to java.util.Comparator

Я могу сделать это:

val comp = Comparator{ a:Int, b:Int -> Integer.compare(a, b) }

или

val comp = Comparator{ a:Int, b:Int -> a.compareTo(b) }

Но есть ли лучший способ?Я чувствую, что для этого не нужно создавать новую функцию-обертку.

1 Ответ

0 голосов
/ 11 июня 2018

Вы можете использовать ссылку на функцию , и вместо

val comp = Comparator { a: Int, b: Int -> Integer.compare(a, b) }

... просто напишите это:

val comp = Comparator(Integer::compare)
...