Generics 类层次结构中的Kotlin泛型不匹配

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() }

为什么这样不行?但它在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()
}
我明白了

类型不匹配:推断类型为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>