gpt4 book ai didi

java - Java 的泛型问题

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:47:31 28 4
gpt4 key购买 nike

这是我的代码片段:

Map<String, ? extends Object> data = this.aub.getData();
//... some code ...
data.put("ip_macs", new LinkedList<Object>()); //gets error

我在标记行得到的错误是(消息取自 Eclipse IDE):

The method put(String, capture#3-of ? extends Object) in the type Map is not applicable for the arguments (String, LinkedList)

有人知道这是为什么吗?只要 LinkedListObject 的子类型,我认为错误就没有任何理由出现。我在哪里误解了这个问题?

最佳答案

泛型类型指定为

Map<String, Object> data = this.aub.getData();
data.put("ip_macs", new LinkedList<Object>()); // Compiles

当你说 Map<String, ? extends Object>这意味着 Map其键的类型为 String值扩展为 Object但它的类型是未知 ? .因为,类型未知,所以插入 LinkedList 是不安全的。那里的对象。

基本上,编译器试图阻止这种情况:

Map<String, String> mapOfStrings = new HashMap<String, String>();
mapOfStrings.add("string", "value");

Map<String, ? extends Object> map = mapOfStrings; // Compiles
map.add("string", 1); // ERROR!

如果允许这样做,您就绕过了泛型提供的类型安全。

关于java - Java 的泛型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18439466/

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