[英]How to add element to Java Generic Wildcard List
如何將字符串和int值同時添加到HashMap?
HashMap<String,?> map =new HashMap<>();
map.put("sss", "str");
map.put("sss", 1);
Android SharedPreferences.getAll()
方法是如何做到的?
錯誤信息
Found 'java.lang.String', required: '?'
您不能向Map<String, ?>
添加任何內容(文字常量null
除外),因為它可能是錯誤的類型。 例如:
Map<String, Long> longMap = ...;
Map<String, ?> wildcardMap = longMap;
wildcardMap.put("", ""); // Compiler error!
// but if it did work, the following would be a runtime error:
Long value = longMap.values().iterator().next();
還記得?
是速記? extends Object
? extends Object
; PECS(縮寫PECS)告訴您extends
是生產者 ,而不是消費者 。 因此,您不能在其實例上調用使用者方法(除非您傳遞null
)。
如果要將異構值放入映射中,則值類型必須是該類型的公共超類。
Map<String, Object> mapForBoth = ...
mapForBoth.put("key1", "string");
mapForBoth.put("key2", 1);
(實際上, Serializable
是String
和Integer
一個更特定的通用超類;由您決定是否是更好的值類型)
嘗試這個
HashMap<String,Object> map =new HashMap<>();
map.put("sss", "str");
map.put("sss", 1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.