Kotlin:Java8的哪些功能还不受支持?

Kotlin:Java8的哪些功能还不受支持?,java,java-8,compatibility,kotlin,Java,Java 8,Compatibility,Kotlin,对于Kotlin中尚未支持的Java8特性,是否有最新的概述 例如,调用默认方法(如编译失败)(不支持的引用错误): import java.util* 趣味主线(args:Array){ val x:Map=HashMap() x、 putIfAbsent(1,2) } 如果覆盖了默认方法,则它可以工作: import java.util.* fun main(args: Array<String>) { val x : HashMap<Int, Int>

对于Kotlin中尚未支持的Java8特性,是否有最新的概述


例如,调用默认方法(如编译失败)(不支持的引用错误):

import java.util*
趣味主线(args:Array){
val x:Map=HashMap()
x、 putIfAbsent(1,2)
}
如果覆盖了默认方法,则它可以工作:

import java.util.*

fun main(args: Array<String>) {
    val x : HashMap<Int, Int> = HashMap<Int, Int>()
    x.putIfAbsent(1, 2)
}
import java.util*
趣味主线(args:Array){
val x:HashMap=HashMap()
x、 putIfAbsent(1,2)
}
这是我通过实验发现的,但是对于决定是否已经可以从Java8代码迁移到Kotlin,系统的概述将是很有价值的


更新:我的示例中的代码是由“Java到Kotlin”转换器创建的。正如user2235698所指出的,
Map
是一个不可变的Kotlin映射。但是,当我将示例更改为
java.util.Map
Map时,它仍然无法编译。然而,我认为它与默认方法有关的说法是误导性的


由于它超出了这个问题的范围,我在这里提出了一个后续问题:

已知的Java 8互操作性问题在Kotlin中被跟踪为
Map
不可变的
HashMap
可变的,这就是为什么不能将键值对放在第一种情况下的原因


请参阅@JBNizet的子任务谢谢,您的链接非常好。我想我会把它转换成一个社区答案。这个问题总是过时的,下面的社区维基答案(和上面的评论)是跟踪这个问题的最好地方。是的,我只是注意到Map不是java.util.Map。但是,如果我将示例更改为java.util.Map,它仍然无法编译。我将其作为一个单独的问题发布:
import java.util.*

fun main(args: Array<String>) {
    val x : HashMap<Int, Int> = HashMap<Int, Int>()
    x.putIfAbsent(1, 2)
}