[英]Java's logical OR operator does not evaluate right hand side despite that right hand side has a unary operator?
[英]Why Diamond operator was not missed from Right hand side in Java 7?
Java 7改进了钻石操作员
在Java 6中
Map<String, String> myMap = new HashMap<String, String>();
在Java 7中
Map<String, String> myMap = new HashMap<>();
在Java 7中,类型已从右侧的钻石操作员(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作为键和对象。 有了这个编译器有足够的信息。 如果您完全错过钻石操作员,为什么会抛出警告呢? 我肯定必须有理由背后但我没有得到它?
以下代码编译并运行,没有错误。
SoftReference<String> ref = new SoftReference(new Integer(1));
Object o = ref.get();
System.out.println(o); // prints "1"
创建SoftReference
的原始实例。 “Raw”表示没有泛型类型检查,这是允许将泛型与预泛化代码混合所必需的。
通过隐含钻石算子,你会破坏它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.