Generics 类层次结构中的Kotlin泛型不匹配
为什么这样不行?但它在Java中工作Generics 类层次结构中的Kotlin泛型不匹配,generics,kotlin,Generics,Kotlin,为什么这样不行?但它在Java中工作 class MyList : java.util.LinkedList<String>() fun main(args: Array<String>) { val x: java.util.List<String> = MyList() } class MyList:java.util.LinkedList() 趣味主线(args:Array){ val x:java.util.List=MyList() }
class MyList : java.util.LinkedList<String>()
fun main(args: Array<String>) {
val x: java.util.List<String> = MyList()
}
class MyList:java.util.LinkedList()
趣味主线(args:Array){
val x:java.util.List=MyList()
}
我明白了
类型不匹配:推断类型为MyList,但应为List
对于作业行
在线评估链接:将您的
val
声明更改为:
val x: List<String> = MyList() // List<String>, not java.util.List<String>
val x:List=MyList()//列表,而不是java.util.List
这种行为的原因可能是Kotlin没有直接使用java.util.List
接口,而是映射到默认导入的Kotlin.collections.List
和Kotlin.collections.MutableList
,甚至还有一个关于java.util.List
用法的IDE警告
在类型检查期间,LinkedList
的类层次结构中,java.util.List
似乎完全被kotlin.collections.List
替换
参见Java集合接口映射文档:类似问题(虽然关于Map
而不是List
,但同样适用):
val x: List<String> = MyList() // List<String>, not java.util.List<String>