gpt4 book ai didi

泛型的 Java Map 编译器错误

转载 作者:搜寻专家 更新时间:2023-11-01 04:01:58 26 4
gpt4 key购买 nike

// I know that this method will generated duplicate 
// trim keys for the same value but I am just
// trying to understand why we have a compile error:
// The method put(String, capture#11-of ?) in the type
// Map<String,capture#11-of ?> is not applicable for the arguments
// (String, capture#12-of ?)

void trimKeyMap(Map<String, ?> map){
for (String key : map.keySet()) {
map.put(StringUtils.trim(key), map.get(key)); // compile error
}
}

为什么我们要放入 map.get(key) 的值可以来自不同的类型?

最佳答案

问题是编译器只知道键类型是“未知”,但不知道它是相同映射键类型和从 get() 返回的类型的未知类型 (即使我们作为人类意识到它是一样的)。

如果你想让它工作,你必须通过键入你的方法告诉编译器它是相同未知类型,例如:

void <V> trimKeyMap(Map<String, V> map) {
for (String key : map.keySet()) {
map.put(StringUtils.trim(key), map.get(key));
}
}

关于泛型的 Java Map 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17213301/

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