Kotlin 中使用 Java 的泛型

Kotlin 的泛型与 Java 有点不同。当将 Java 类型导入 Kotlin 时,我们会执行一些转换:

Kotlin 的泛型 Java 的泛型 说明
Foo<out Bar!>! Foo<? extends Bar> Java 的通配符转换成类型投影
Foo<? super Bar> Foo<in Bar!>! 同上
List<*>! List Java的原始类型转换成星投影

和 Java 一样,Kotlin 在运行时不保留泛型,即对象不携带传递到他们构造器中的那些类型参数的实际类型。

ArrayList<Integer>()ArrayList<Character>() 是不能区分的。