如何在 Kotlin 中使用现有的比较器

问题描述 投票:0回答:2
@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) }

但是有更好的方法吗? 我觉得我不必为此创建一个新的包装函数。

java lambda kotlin comparison comparator
2个回答
2
投票

您可以使用 函数参考,而不是

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

...只需写下:

val comp = Comparator(Integer::compare)

0
投票

我更喜欢使用

naturalOrder

val comp = naturalOrder<Int>()
© www.soinside.com 2019 - 2024. All rights reserved.