以下两个声明有什么区别
List<Integer> l = new ArrayList(); //and
List<Integer> l = new ArrayList<Integer>();
If not那为什么在java 7中dimond operator
ie <>
引入是为了避免在右侧键入'='
或在对象创建端。
考虑这个例子
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),这只是编译时类型检查。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)