簡體   English   中英

Map.entry和entrySet()泛型類型出錯

[英]Map.entry and entrySet() generic type goes wrong

這是失敗的代碼

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.Entry Map.Entry<Object,Object>
為什么不Set<Map.Entry> ≈set set<Map.Entry<Object,Object>

我找到了相關問題,但我的問題是這種情況有所不同。
為了更加具體化,為什么當我使用Set<Map.Entry> ,事件無法通過編譯並得到錯誤,而不僅僅是警告?
但是在另一種情況下,例如ArrayList li = new ArrayList<String>();
我可以通過編譯得到警告“ ArrayList是原始類型。對泛型類型ArrayList的引用應參數化”

這是因為有set <>泛型類型。例如,
HashSet<String> s1 = new HashSet<Integer>可能出錯。
如果右側是Integer通用類型實例,則左側引用變量的通用類型不能為String。
所以String ≠ Integer就像Map.Entry ≠ Map.Entry<Object,Object>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM