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

为什么这不工作? 它在Java中工作。

class MyList : java.util.LinkedList<String>() fun main(args: Array<String>) { val x: java.util.List<String> = MyList() } 

我明白了

 Type mismatch: inferred type is MyList but List<String> was expected 

对于分配线。

链接在线评估: http : //try.kotlinlang.org/#/UserProjects/70dhmnocn8ueh73hg0o61mp01f/8ormftvrpbimfu0l3uf37galv

将您的val声明更改为:

 val x: List<String> = MyList() // List<String>, not java.util.List<String> 

这种行为的原因可能是Kotlin不直接使用java.util.List<E>接口,而是将其映射到kotlin.collections.List<E>kotlin.collections.MutableList<E> ,这是默认导入的,甚至有关于java.util.List<T>用法的IDE警告。

在类型检查过程中, java.util.List<E>被完全替换为LinkedList<String>的类层次结构中的kotlin.collections.List<E>

请参阅有关Java集合接口映射的文档:( 链接)