java - 对 Java 集合使用泛型的意外行为

标签 java generics collections

我刚刚意识到的一些奇怪的事情:

Java 文档指出 List 集合有一个方法 T get(int index) ... 正如您所见该方法返回 T

不过我能做到:

List<Integer> l1 = new ArrayList<>();
l1.add(1);
List l2 = l1;
l2.add("Hello my friend");
Object o2 = l1.get(1);
System.out.println(o2);

结果是“你好我的 friend ”!! ...这不符合文档中的规定,因为结果应为整数!

还有其他可能的解释吗?

最佳答案

泛型是编译时检查。一旦您开始使用原始类型……您就是这样。这就是为什么原始类型是危险的,永远不应在新代码中使用。

关于java - 对 Java 集合使用泛型的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22971000/

相关文章:

oracle - Listagg 函数与 PLSQL 集合

java - 合并和排序列表

c# - 如何获取给定方法的泛型参数的类型

java - 存在克隆方法时复制构造函数的用途?

java - 如何从 Osmdroid map 上删除标记

java - 有时,类在加载时编织期间不会被编织

c# - 从 PropertyInfo 创建通用列表 <Type>

generics - 通用类的 Swift 委托(delegate)协议(protocol)

java - 如何在 Java 中设计一个通用类来检查提供给它的允许值?

java - Autowiring 工厂创建实例的 spring 方法是什么?