一个非常简单的例子:
val map = mapOf("one" to 1, "two" to 2)
map.forEach{k, v -> if (k == "one") println(v)} //Java API
map.forEach{(k, v) -> if (k == "two") println(v)} //Kotlin extension
我对IDE警告Java Map.forEach method call should be replaced with Kotlin's forEach
的第二行感到困惑。我不明白为什么要替换它。它们看起来工作方式相同,唯一的区别是java方法需要少输入两个符号。有什么想法吗?
2条答案
按热度按时间iaqfqrcu1#
如果没有别的,它是一个内联函数,可以更有效地执行诸如在其他地方改变状态或平滑地合并suspend函数之类的操作。
在任何地方使用相同的
forEach
比在任何给定点跟踪您正在使用的forEach
要简单得多。r7knjye22#
除其他答案外:Java方法只能在Kotlin/JVM中使用,而Kotlin函数是跨平台的,也可以在Kotlin/Native和Kotlin/JS中使用。 因此,如果没有充分的理由使用Java版本,则默认使用兼容性更强的Kotlin版本是有意义的。