gpt4 book ai didi

java - 如何将 addAll 与通用集合一起使用?

转载 作者:搜寻专家 更新时间:2023-10-31 20:03:21 25 4
gpt4 key购买 nike

为什么

List<Map<String, Object>> a, b;
a.addAll(b);

编译

但是

List<? extends Map<String, ?>> a, b;
a.addAll(b);

没有。

后者如何编译?

最佳答案

假设 CustomHashMap 扩展了 HashMap 并且您初始化 a 如下:

List<CustomHashMap<String, String> list = new ArrayList<CustomHashMap<String, String>>();
List<? extends Map<String, ?>> a = list;

如果您能够将条目添加到a...

a.add(new HashMap<String, String>());

...你会遇到这种奇怪的情况

CustomHashMap<String, String> map = list.get(0); // you would expect to get CustomHashMap object but you will get a HashMap object instead

换句话说,您不知道 Map 的实际类型(当您说 ? extends Map 时),您所知道的只是它是 Map 的某个子类型,您不能向 List 添加任意对象,因为您需要确保添加的对象有一个父类(super class)型。但是你不能,因为 Map 的确切类型是未知的。

关于java - 如何将 addAll 与通用集合一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18528484/

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