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

标签 java lambda kotlin comparison comparator

@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) }

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

最佳答案

您可以使用 function reference ,而不是

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

...只需这样写:

val comp = Comparator(Integer::compare)

关于java - 如何在 Kotlin 中使用现有的比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50804222/

相关文章:

java - 从 java 中的供应商枚举获取字符串值

kotlin - 如何创建一个内部类,其中只有外部类可以访问构造函数,而其余部分在任何地方都可见?

java - Kotlin 是否打破了封装规则?

java - 在 iPad 上下载根证书时出错

匿名类型中的 C# 方法初始化

java - EC2 AWS 实例 : Check if tomcat is running

c# - 将此委托(delegate)转换为匿名方法或 lambda

unit-testing - 在Kotlin中模拟http响应

java - AWS S3 客户端竞争条件解决方案

java - 将 JLabel 添加到 JFrame