为什么put(K键,V值)和put(K键,Set <v>值)有名称冲突?</v>

时间:2014-07-06 04:06:58

标签: java

我正在尝试实现自己的multimap,这是一个值集值映射的包装器。

这是SSCCE

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

    public void put(K key, V value) {

    }
}

它给了我这个错误:

  

名称冲突:TreeMapTreeSet类型的put(K,V)方法与TreeMap类型的put(K,V)具有相同的擦除,但不会覆盖它

AFAIK,不会放置(对象,设置)与put(对象,对象)不同的擦除吗?


如果我将其更改为以下

,我只能覆盖它
@Override
public Set<V> put(K key, Set<V> value) {
    return value;       
}

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

1 个答案:

答案 0 :(得分:1)

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

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

foo.put此处无法签名put(Object, Set)。它必须是put(Object, Object)