ArrayList通用(无类型)
最近,我读了一段对我来说似乎很奇怪的代码。众所周知,在需要使用集合时,需要初始化它们的泛型类型。此外,我们知道集合可以包含集合作为其元素。
代码:
public class Solution {public static void main(String args[]) {
ArrayList res = returnlist();
System.out.print(res.get(0));
}
public static ArrayList<ArrayList<Integer>> returnlist() {
ArrayList result = new ArrayList();
ArrayList<Integer> content = new ArrayList<Integer>();
content.add(1);
result.add(content);
return result;
}}
我的问题是
- 我们为什么要使用它
ArrayList result = new ArrayList();
来创建对象,因为我们没有为集合提供元素的实际类型。 - 为什么我们要使用
result.add(content);
集合“结果”添加到集合中,而“结果”只是一个简单的集合。我们没有把它定义为一个ArrayList
的ArrayList
回答:
Java通用集合没有存储类型,以确保与J2SE
5.0以前的版本向后兼容。将类型信息添加到通用集合后,该信息将被删除。这称为类型擦除。
这意味着可以将泛型集合分配给非泛型引用,并且可以将泛型类型化集合中的对象放置在非泛型,非类型化集合中。
所有Java泛型实际上所做的就是确保您不能将错误的类型添加到泛型列表中,并避免进行显式的检索类型转换。即使它仍然隐式完成。
- 这个答案的Java部分会更深入地介绍我刚才所说的内容
- 本文还基本上以更完整的方式涵盖了您的要求
- 其他的事情要注意与类型消除
以上是 ArrayList通用(无类型) 的全部内容, 来源链接: utcz.com/qa/397416.html