gpt4 book ai didi

java - 如何向 Java 通用通配符列表添加元素

转载 作者:行者123 更新时间:2023-12-02 12:46:04 24 4
gpt4 key购买 nike

如何同时向 HashMap 添加字符串和 int 值?

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

Android SharedPreferences.getAll() 方法是如何做到这一点的?

错误消息

Found 'java.lang.String', required: '?'

最佳答案

您不能将任何内容(除了文字 null )添加到 Map<String, ?> 中。 ,因为它可能是错误的类型。例如:

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 的简写;和缩写PECS告诉你 extends生产者,而不是消费者。因此,您无法在其实例上调用消费者方法(除非您传递 null )。

如果要将异构值放入映射中,值类型必须是这些类型的公共(public)父类(super class)。

Map<String, Object> mapForBoth = ...
mapForBoth.put("key1", "string");
mapForBoth.put("key2", 1);

(实际上, SerializableStringInteger 的更具体的公共(public)父类(super class);这取决于您是否是更好的值类型)

关于java - 如何向 Java 通用通配符列表添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44775113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com