gpt4 book ai didi

java - 为什么 put(K key, V value) 和 put(K key, Set value) 存在名称冲突?

转载 作者:太空宇宙 更新时间:2023-11-04 06:41:48 25 4
gpt4 key购买 nike

我正在尝试实现我自己的多重映射,它是键到值集映射的包装器。

这是 SSCCE

public class TreeMapTreeSet<K, V> extends TreeMap<K, Set<V>> {

public void put(K key, V value) {

}
}
<小时/>

它给了我这个错误:

Name clash: The method put(K, V) of type TreeMapTreeSet has the same erasure as put(K, V) of type TreeMap but does not override it

AFAIK,删除不会是与 put(Object, Object) 不同的 put(Object, Set) 吗?

<小时/>

只有将其更改为以下内容才能覆盖它

@Override
public Set<V> put(K key, Set<V> value) {
return value;
}
<小时/>

我无法覆盖它,也不能不覆盖它。请帮忙,谢谢。

最佳答案

继承方法的删除仍然是put(Object, Object)。要看到这一点,请考虑如果将其分配给原始 TreeMap 变量,您会得到什么:

TreeMap foo = new TreeMapTreeSet<Integer, Integer>();

foo.put 此处不能有签名 put(Object, Set)。它必须是 put(Object, Object)

关于java - 为什么 put(K key, V value) 和 put(K key, Set<V> value) 存在名称冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24592616/

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