这是破旧的代码
Set<Map.Entry> entrySet = new HashMap<Object,Object>().entrySet();
它出现了编译错误
cannot convert from Set<Map.Entry<Object,Object>> to Set<Map.Entry>
但Map.Entry
中Map.Entry<Object,Object>
的情况下,不应使用通用类型时应该发出警告
但为什么这里出现编译错误?
然后我怀疑整个Set<Map.Entry>
可能是原因,也许是Set<Map.Entry>
≠set<Map.Entry<Object,Object>
但是因为Map.Entry
≈Map.Entry<Object,Object>
为什么不Set<Map.Entry>
≈set<Map.Entry<Object,Object>
我发现了相关问题,但我的问题是这个案例有所不同
为了更加节省空间,为什么当我使用Set<Map.Entry>
时,我无法通过编译获得错误而不仅仅是警告?
但在另一种情况下,例如ArrayList li = new ArrayList<String>();
我可以通过编译获得警告&#34; ArrayList是原始类型。应该是对泛型类型ArrayList的引用
参数&#34;
答案 0 :(得分:1)
因为设置&lt;&gt;泛型类型。例如,
HashSet<String> s1 = new HashSet<Integer>
可能出错
如果右侧是Integer泛型类型实例,则左侧的引用变量的泛型类型不能是String。
所以String ≠ Integer
就像Map.Entry ≠ Map.Entry<Object,Object>