是什么在以下两个声明差异列表<Integer>升=新的ArrayList()和List<Integer>升=新的ArrayList <integer>()
差异List<Integer> l = new ArrayList(); //and
List<Integer> l = new ArrayList<Integer>();
如果没有那么为什么在Java 7中dimond operator
即<>
是引入以避免在'='
的右侧或在对象创建侧的类型书写。
是什么在以下两个声明差异列表<Integer>升=新的ArrayList()和List<Integer>升=新的ArrayList <integer>()
差异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),这只是编译时类型检查。
Dublicate问题: http://stackoverflow.com/questions/4166966/what-is-the-point-of-the- diamond-operator-in-java-7 – Murali
@nbroos你所描述的是变量类型声明的类型参数,而不是构造函数。 –