Tag: 兼容性

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

是否有关于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) } 如果默认方法被覆盖,它将起作用: import java.util.* fun main(args: Array<String>) { val x : HashMap<Int, Int> = HashMap<Int, Int>() x.putIfAbsent(1, 2) } 这就是我通过实验发现的结果,但是对于决定是否已经可以从Java 8代码迁移到Kotlin,系统性的概述将是有价值的。 更新:我的例子中的代码是由“Java to Kotlin”转换器创建的。 正如user2235698指出的那样, Map<Int, Int>是一个不可变的Kotlin映射。 不过,当我将其更改为java.util.Map映射时,该示例无法编译。 然而,我声称它必须用默认的方法做一些事情,这是误导性的。 由于它超出了这个问题的范围,所以我在这里打开了一个后续问题: java.util.HashMap是否不在Kotlin中实现java.util.Map?

在java代码中使用kotlin库

我有一个kotlin库的FlowLayout库为aar , 并希望在我的java代码(android)中使用它,但不能解决kotlin.Pair 。 FlowLayoutManager layoutManager=new FlowLayoutManager(3, RecyclerView.HORIZONTAL, new FlowLayoutManager.Interface() { @Override public kotlin.Pair<Integer, Integer> getProportionalSizeForChild(int i) { return null; } }); 我已经尝试android.support.v4.util.Pair但不兼容。 如何在Java代码中使用kotlin库及其对象依赖关系?