【发布时间】:2015-09-21 09:42:13
【问题描述】:
在 JDK 8 中,编译器建议省略这个
ArrayList<String> someList = new ArrayList<String>();
到这里
ArrayList<String> someList = new ArrayList<>();
将第二个String 标记为冗余。
但是,即使像这样完全省略了菱形运算符,编译器也不会抱怨
ArrayList<String> someList = new ArrayList();
这似乎不会在运行时产生任何问题。拥有钻石运营商和没有拥有钻石运营商之间有什么具体区别吗?如果有人能详细说明,我将不胜感激。
【问题讨论】:
-
我明确地寻找 java 8 资源,认为它是 java 8 特定的东西。感谢您提供这些!
-
你应该在编译时得到一个unchecked conversion警告,表明你正在做一些可能不安全的事情。
-
其实我没有,这就是最初让我感到惊讶的地方。我正在使用 NetBeans,但我几乎没有注意到该行缺少菱形运算符。
-
也许您已经调整了 NetBeans 中的警告/检查配置文件?大多数 IDE 将使用其默认设置标记这一点;当然 javac 会在你的构建中发出未经检查的警告。