首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kotlin: Java 8的哪些特性还不被支持?

Kotlin: Java 8的哪些特性还不被支持?
EN

Stack Overflow用户
提问于 2015-12-11 17:03:59
回答 2查看 685关注 0票数 9

是否有最新的Java 8特性概述,这些特性在Kotlin中还不受支持?

例如,调用默认方法(如Map#putIfAbsent )无法编译(不支持引用错误):

代码语言:javascript
复制
import java.util.*

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

如果重写了默认方法,则它可以工作:

代码语言:javascript
复制
import java.util.*

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

这就是我通过实验发现的,但是对于决定是否可以从Java 8代码迁移到Kotlin,一个系统的概述是很有价值的。

更新:示例中的代码是由"Java“转换器创建的。正如user2235698所指出的,Map<Int, Int>是一个不可变的Kotlin映射。尽管如此,当我将示例更改为java.util.Map映射时,它仍然无法编译。然而,我声称它必须用默认方法做一些事情,这是误导性的。

由于它超出了这个问题的范围,我打开了一个后续问题,在这里:java.util.HashMap没有在Kotlin中实现java.util.Map吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-11 18:05:18

已知的Java 8互操作性问题被跟踪为本期的子任务

票数 9
EN

Stack Overflow用户

发布于 2015-12-13 16:29:02

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

更多细节

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34228786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档