java - List<Integer> l = new ArrayList() 和 List<Integer> l = new ArrayList<integer>() 的区别

标签 java generics

<分区>

下面两个声明有什么区别

List<Integer> l = new ArrayList(); //and 

List<Integer> l = new ArrayList<Integer>();

如果不是 那为什么在 java 7 dimond operator<>引入是为了避免在'='的右边打字或在对象创建端。

最佳答案

考虑这个例子

List<Float> f = new ArrayList();     // this list hold(s) Float(s).
f.add(2.0f);
List<Integer> l = new ArrayList(f);  // Oh no.... 
l.add(1);
System.out.println(l);            

如果我运行上面的命令,我会得到

[2.0, 1]

如果我使用菱形运算符,我会得到一个编译器错误。这有帮助吗? 在运行时,由于类型删除,每个 Collection 都包含 java.lang.Ojbect(s),这只是编译时类型检查。

关于java - List<Integer> l = new ArrayList() 和 List<Integer> l = new ArrayList<integer>() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20604137/

相关文章:

java - 授予对签名小程序的访问权限不起作用

java - exec 不适用于 java 1.7.21,但在 netbeans 中工作正常

Android 通用用户代理 (UA)

具有有界通配符的 Java 泛型

java - 如何在泛型中实现空对象模式?

java - 如何泛化返回其调用对象的方法的返回类型

java - Android 尝试删除我的应用程序中的文件,但仅删除我的应用程序创建的文件

java - 更改 PircBot 登录

c++ - 理解值绑定(bind)器

java - 如何在连续按下 JButton 的同时使用 Clip 更流畅地播放音频文件