我有一个关于在集合中使用泛型的问题。
ArrayList<Integer> al=new ArrayList<Integer>();
我们知道上面一行的意思是ArrayList
al
仅限于保存整数。所以下面这行给出了一个编译错误:
al.add("wwww");
但是我不明白下面这行是什么意思,
ArrayList al=new ArrayList<Integer>();
我们不提供的地方 ArrayList<Integer>
声明时在左侧。现在以下行不会给出编译错误:
al.add("wwww");
所以如果我这样声明
ArrayList al=new ArrayList<Integer>();
这意味着 a1
可以接受任何类型吗?
这两个声明有什么区别?
最佳答案
后一个声明(没有通用类型)已过时且已弃用。你不应该使用它,它编译只是为了向后兼容。现代 IDE 会在此处生成警告。
另请注意,Java 仅在编译时强制执行泛型类型,因此从技术上讲,您可以通过一些额外的转换将不正确的类型添加到集合中。这就是为什么最好始终使用泛型并且不要绕过它们。
关于java - 泛型集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932551/