首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在Java 7中,菱形操作符没有从右手边漏掉?

为什么在Java 7中,菱形操作符没有从右手边漏掉?
EN

Stack Overflow用户
提问于 2014-03-23 12:56:01
回答 1查看 652关注 0票数 2

Java 7改进了菱形操作符

在Java 6中

代码语言:javascript
复制
Map<String, String> myMap = new HashMap<String, String>();

在Java 7中

代码语言:javascript
复制
  Map<String, String> myMap = new HashMap<>();

在Java中,从右手边的菱形操作符(RHS)中删除了类型。我的问题是为什么不从RHS移除完整的钻石操作。我知道它会抛出警告,但是java 7也可以删除警告。

代码语言:javascript
复制
                    -

 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。有了这个编译器就有足够的信息。那么,如果你完全错过了钻石操作员,它为什么会抛出警告呢?我肯定这背后一定有道理,但我不明白?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-23 13:21:01

下面的代码编译并运行,没有错误。

代码语言:javascript
复制
SoftReference<String> ref = new SoftReference(new Integer(1));
Object o = ref.get();
System.out.println(o); // prints "1"

创建了SoftReference的原始实例。“原始”意味着不存在泛型类型检查,这是允许将泛型与预泛型代码混合使用所必需的。

通过使菱形运算符隐式,您将打破它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22591201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档