我正在尝试实现自己的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;
}
我无法覆盖它,也不能覆盖它。 请帮忙,谢谢。
答案 0 :(得分:1)
继承方法的删除仍为put(Object, Object)
。要看到这一点,请考虑如果将其分配给原始TreeMap
变量,您将得到什么:
TreeMap foo = new TreeMapTreeSet<Integer, Integer>();
foo.put
此处无法签名put(Object, Set)
。它必须是put(Object, Object)
。