爲什麼下面的代碼給一個編譯時錯誤。錯誤泛型代碼
Map<String,? extends Object> inputMap =
new HashMap<String, ? extends Object>();
編譯時錯誤。
無法實例
HashMap<String,? extends Object>
我想用String作爲鍵地圖和該類型接受任何對象作爲價值
爲什麼下面的代碼給一個編譯時錯誤。錯誤泛型代碼
Map<String,? extends Object> inputMap =
new HashMap<String, ? extends Object>();
編譯時錯誤。
無法實例
HashMap<String,? extends Object>
我想用String作爲鍵地圖和該類型接受任何對象作爲價值
?
並不意味着「採取任何對象」。它意味着「採取特定類型的對象,這恰好是未知的」,這在實際創建容器時沒有意義。
試試這個:
Map<String,Object> inputMap = new HashMap<String,Object>();
這是因爲你需要指定值的類型那HashMap
應該包含。基本上,在實例化類時不能使用通配符。
這工作雖然罰款:
Map<String, ? extends Object> inputMap = new HashMap<String, Object>();
然而,他說,?
應該延伸Object
是一種多餘的,因爲一切都擴展對象(你當然可以有你的真實代碼的東西比Object
其他)。
如果你這樣做,但是,你不能把任何東西在你的地圖(如它的唯一的參考是通配符通用)。 –
的確如此。我只是試圖說明它實際上需要具體的類型參數。 – aioobe