java - 泛型集合

标签 java arrays generics collections

我有一个关于在集合中使用泛型的问题。

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/

相关文章:

java - map 接口(interface)java

java - 如何以字符串类型按日历对 map 进行排序?

java - SpringMVC跨服务器上传文件Handler调度失败;嵌套异常是 java.lang.NoClassDefFoundError : javax/ws/rs/ext/Providers

python - Numpy 数组与 Python 数组

javascript - 使用子数组对数组进行展平和排序

java - 有什么办法可以规避 lambda 表达式的类型化?

c# - 有没有一种方法可以在不显式传递通用类型的情况下对结果集合调用 DbContext.Translate?

java - Eclipse 的 Java 格式化程序能否以不同于新 block 的方式缩进换行?

php - print_r 输出为字符串,仅返回最后一项

Swift Mediator Pattern - 通用协议(protocol)的集合