是否有关于Java 8功能的最新概述,Kotlin尚不支持?
例如,调用Map#putIfAbsent等默认方法无法编译(不支持的引用错误):
import java.util.* fun main(args: Array) { val x : Map = HashMap () x.putIfAbsent(1, 2) }
如果覆盖默认方法,则它可以工作:
import java.util.* fun main(args: Array) { val x : HashMap = HashMap () x.putIfAbsent(1, 2) }
这就是我通过实验发现的,但是为了决定是否已经可以从Java 8代码基础迁移到Kotlin,系统的概述将是有价值的.
更新:我的示例中的代码是由"Java to Kotlin"转换器创建的.正如user2235698指出的那样,Map
是一个不可变的Kotlin地图.但是,当我将其更改为java.util.Map
地图时,该示例无法编译.然而,我声称它必须使用默认方法做一些事情会产生误导.
由于它超出了这个问题的范围,我在这里开了一个后续问题:java.util.HashMap在Kotlin中没有实现java.util.Map吗?
已知Java 8互操作性问题作为此问题的子任务进行跟踪