<分区>
下面两个声明有什么区别
List<Integer> l = new ArrayList(); //and
List<Integer> l = new ArrayList<Integer>();
如果不是 那为什么在 java 7 dimond operator
即<>
引入是为了避免在'='
的右边打字或在对象创建端。
<分区>
下面两个声明有什么区别
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/