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);集合“结果”添加到集合中,而“结果”只是一个简单的集合。我们没有把它定义为一个ArrayListArrayList

回答:

Java通用集合没有存储类型,以确保与J2SE

5.0以前的版本向后兼容。将类型信息添加到通用集合后,该信息将被删除。这称为类型擦除。

这意味着可以将泛型集合分配给非泛型引用,并且可以将泛型类型化集合中的对象放置在非泛型,非类型化集合中。

所有Java泛型实际上所做的就是确保您不能将错误的类型添加到泛型列表中,并避免进行显式的检索类型转换。即使它仍然隐式完成。

  • 这个答案的Java部分会更深入地介绍我刚才所说的内容
  • 本文还基本上以更完整的方式涵盖了您的要求
  • 其他的事情要注意与类型消除

以上是 ArrayList通用(无类型) 的全部内容, 来源链接: utcz.com/qa/397416.html

回到顶部