以下两个声明有什么区别
List<Integer> l = new ArrayList(); //and
List<Integer> l = new ArrayList<Integer>();
如果不是那么为什么在java 7 dimond operator
中引入<>
以避免在'='
的右侧或对象创建侧进行类型编写。< / p>
答案 0 :(得分:4)
考虑这个例子
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),这只是编译时类型检查。
答案 1 :(得分:1)