Map.entry和entrySet()泛型类型出错

时间:2016-12-21 20:58:41

标签: java collections hashmap

这是破旧的代码

Set<Map.Entry> entrySet = new HashMap<Object,Object>().entrySet();

它出现了编译错误

cannot convert from Set<Map.Entry<Object,Object>> to Set<Map.Entry>

Map.EntryMap.Entry<Object,Object>的情况下,不应使用通用类型时应该发出警告 但为什么这里出现编译错误?
然后我怀疑整个Set<Map.Entry>可能是原因,也许是Set<Map.Entry>set<Map.Entry<Object,Object>
但是因为Map.EntryMap.Entry<Object,Object>
为什么不Set<Map.Entry>set<Map.Entry<Object,Object>

我发现了相关问题,但我的问题是这个案例有所不同 为了更加节省空间,为什么当我使用Set<Map.Entry>时,我无法通过编译获得错误而不仅仅是警告? 但在另一种情况下,例如ArrayList li = new ArrayList<String>();
我可以通过编译获得警告&#34; ArrayList是原始类型。应该是对泛型类型ArrayList的引用      参数&#34;

1 个答案:

答案 0 :(得分:1)

因为设置&lt;&gt;泛型类型。例如,
HashSet<String> s1 = new HashSet<Integer>可能出错 如果右侧是Integer泛型类型实例,则左侧的引用变量的泛型类型不能是String。
所以String ≠ Integer就像Map.Entry ≠ Map.Entry<Object,Object>

一样