我刚刚意识到的一些奇怪的事情:
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/