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集合接口映射的文档:( 链接)