如何在 Kotlin 中使用现有的比较器
How to use existing comparators in Kotlin
@Suppress("UNCHECKED_CAST")
val comp = Integer::compare as Comparator<Int>
结果:
java.lang.ClassCastException:
org.organicdesign.fp.xform.TransformableTest$testToImSortedSet$comp
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) }
但是有没有更好的办法呢?我觉得我不应该为此创建一个新的包装函数。
您可以使用 function reference 而不是
val comp = Comparator { a: Int, b: Int -> Integer.compare(a, b) }
...就这样写:
val comp = Comparator(Integer::compare)
@Suppress("UNCHECKED_CAST")
val comp = Integer::compare as Comparator<Int>
结果:
java.lang.ClassCastException:
org.organicdesign.fp.xform.TransformableTest$testToImSortedSet$comp
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) }
但是有没有更好的办法呢?我觉得我不应该为此创建一个新的包装函数。
您可以使用 function reference 而不是
val comp = Comparator { a: Int, b: Int -> Integer.compare(a, b) }
...就这样写:
val comp = Comparator(Integer::compare)