当由于擦除导致类型信息在运行时不可用时,java 编译器如何知道为泛型集合中的对象提供适当的转换?
问问题
883 次
2 回答
1
每当您调用 eglist.get(foo)
并且列表是 an时,调用者而不是被调用者ArrayList<String>
将结果get
转换为 a 。调用者在编译时知道应该将结果转换为 (a ),因此可以将转换插入那里。String
String
于 2012-10-23T16:08:42.913 回答
0
按照oracle教程
- 如果类型参数是无界的,则将泛型类型中的所有类型参数替换为其边界或 Object。因此,生成的字节码只包含普通的类、接口和方法。
- 必要时插入类型转换以保持类型安全。
- 生成桥方法以保留扩展泛型类型中的多态性。
因此,您的类文件包含有界类(或)Object 而不是泛型类型。
于 2012-10-23T15:44:50.663 回答