Tag: 擦除

Java和Kotlin使用泛型进行铸造。 丢失类型安全

当在Kotlin / Java中编码时,我偶然发现了使用投射和泛型的东西。 似乎有可能让类型系统相信列表的类型是List<Foo> ,而它实际上是一个List<Object> 。 任何人都可以向我解释为什么这是可能的? 以下是Kotlin和Java中的一个例子: 在Kotlin的例子 fun <T> test(obj: Any): List<T> { val ts = ArrayList<T>() ts.add(obj as T) return ts } fun <T> test2(obj: Any): T { return obj as T } fun <T> test3(obj: Any): List<T> { val ts = ArrayList<T>() ts.add(test2(obj)) return ts } fun main(args: Array<String>) { val […]