gpt4 book ai didi

java - 无法将通用列表添加到通用 map

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

我有一张通用 map

Map<String, List<A<?>>> map = new HashMap<>();

然后我有一个类似的列表:

List<A<Integer>> list1 = getData();
List<A<String>> list2 = getData2();

我正在尝试将它们添加到 map 中,但收到一条错误消息,指出参数错误。

map.put("a", list1);
map.put("b", list2);
//doesn't work

把 map 做成这样

Map<String, List<A>> map = HashMap<>();

也不起作用。如何更改“ map ”才能添加这两个列表?

最佳答案

泛型不会递归求值。此处不会计算通配符 ( <?> )。

如果您有 Map<String, List<A<?>>>那么您必须添加 List<A<?>>对它的值(value)观; List<A<Integer>>不符合 List<A<?>> 的资格。 List<A<?>>表示未知类型的 A 实例的 List,因此您必须传递未知类型的 A 实例的 List。

您可以做的是显式创建这样一个列表,并将类型化 A 列表的所有元素添加到其中:

List<A<Integer>> list1 = getData();
List<A<String>> list2 = getData2();

List<A<?>> list1Unknown = new ArrayList<>();
list1.forEach(list1Unknown::add);

List<A<?>> list2Unknown = new ArrayList<>();
list2.forEach(list2Unknown::add);

map.put("a", list1Unknown);
map.put("b", list2Unknown);

关于java - 无法将通用列表添加到通用 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49685216/

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