Java 7改进了菱形操作符
在Java 6中
Map<String, String> myMap = new HashMap<String, String>();在Java 7中
Map<String, String> myMap = new HashMap<>();在Java中,从右手边的菱形操作符(RHS)中删除了类型。我的问题是为什么不从RHS移除完整的钻石操作。我知道它会抛出警告,但是java 7也可以删除警告。
-
Type safety: The expression of type HashMap needs unchecked conversion to conform to
Map<String,String>
- HashMap is a raw type. References to generic type HashMap<K,V> should be parameterized我的想法背后的逻辑:-正如我们已经定义的那样,地图将以字符串作为键和对象,并在LHS上使用map myMap。有了这个编译器就有足够的信息。那么,如果你完全错过了钻石操作员,它为什么会抛出警告呢?我肯定这背后一定有道理,但我不明白?
发布于 2014-03-23 13:21:01
下面的代码编译并运行,没有错误。
SoftReference<String> ref = new SoftReference(new Integer(1));
Object o = ref.get();
System.out.println(o); // prints "1"创建了SoftReference的原始实例。“原始”意味着不存在泛型类型检查,这是允许将泛型与预泛型代码混合使用所必需的。
通过使菱形运算符隐式,您将打破它。
https://stackoverflow.com/questions/22591201
复制相似问题