java.util.HashMap 是否在 Kotlin 中没有实现 java.util.Map?
2022-09-03 14:25:39
我很难理解为什么Java与Kotlin中的Java不兼容:HashMap
Map
val map : java.util.Map<Int, Int> = java.util.HashMap<Int, Int>()
// ERROR: Type mismatch
这是一个错误,还是故意强制成为 Kotlin 中的错误?
这是 Java to Kotlin 编译器的第二个示例。看看这个Java示例文件:
public class Test {
public static void main(String[] args) {
java.util.Map<Integer, Integer> map = new java.util.HashMap<>();
insertValue(map);
}
private static void insertValue(java.util.Map<Integer, Integer> map) {
map.putIfAbsent(0, 1);
}
}
运行“将 Java 转换为 Kotlin”将生成以下文件:
object Test {
@JvmStatic fun main(args: Array<String>) {
val map = java.util.HashMap<Int, Int>()
insertValue(map)
}
private fun insertValue(map: Map<Int, Int>) {
map.putIfAbsent(0, 1) // ERROR! Unresolved reference
}
}
如果我尝试修改它以反映更多的原始文件,其中需要Java,我得到另一个错误:insertValue
java.util.Map
object Test {
@JvmStatic fun main(args: Array<String>) {
val map = java.util.HashMap<Int, Int>()
insertValue(map) // ERROR: Type mismatch
}
private fun insertValue(map: java.util.Map<Int, Int>) {
map.putIfAbsent(0, 1) // is now OK
}
}