Phi*_*ßen 9 java compatibility java-8 kotlin
是否有关于Java 8功能的最新概述,Kotlin尚不支持?
例如,调用Map#putIfAbsent等默认方法无法编译(不支持的引用错误):
import java.util.*
fun main(args: Array<String>) {
val x : Map<Int, Int> = HashMap<Int, Int>()
x.putIfAbsent(1, 2)
}
Run Code Online (Sandbox Code Playgroud)
如果覆盖默认方法,则它可以工作:
import java.util.*
fun main(args: Array<String>) {
val x : HashMap<Int, Int> = HashMap<Int, Int>()
x.putIfAbsent(1, 2)
}
Run Code Online (Sandbox Code Playgroud)
这就是我通过实验发现的,但是为了决定是否已经可以从Java 8代码基础迁移到Kotlin,系统的概述将是有价值的.
更新:我的示例中的代码是由"Java to Kotlin"转换器创建的.正如user2235698指出的那样,Map<Int, Int>
是一个不可变的Kotlin地图.但是,当我将其更改为java.util.Map
地图时,该示例无法编译.然而,我声称它必须使用默认方法做一些事情会产生误导.
由于它超出了这个问题的范围,我在这里开了一个后续问题:java.util.HashMap在Kotlin中没有实现java.util.Map吗?
归档时间: |
|
查看次数: |
655 次 |
最近记录: |