簡體   English   中英

如何將元素添加到Java通用通配符列表

[英]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);

(實際上, SerializableStringInteger一個更特定的通用超類;由您決定是否是更好的值類型)

嘗試這個

 HashMap<String,Object> map =new HashMap<>();
 map.put("sss", "str");
 map.put("sss", 1);

暫無
暫無

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

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