Kotlin:Java 8的哪些function尚未支持?

是否有关于Java 8function的最新概述,这些function在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互操作性问题被作为这个问题的子任务来跟踪

Map不可变的HashMap在Kotlin中是可变的,这就是为什么在第一种情况下你不能放置键值对。

更多细节