当我在TreeMap中覆盖"put(K键,V值)"时,如何更改"值"?

red*_*hoe 2 java generics overriding

我扩展了TreeMap,覆盖了"put()",并做了类似的事情:

public class MyMap<K, Integer> extends TreeMap<K, Integer> {
    @Override
    public Integer put(K key, Integer value) throws ClassCastException, NullPointerException {
        java.lang.Integer newValue = java.lang.Integer.valueOf(123);
        super.put(key, newValue); // <--- error message here
        return newValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

错误消息:
没有找到适合put的方法(K,java.lang.Integer)... java.lang.Integer无法转换为Integer.

我知道它与泛型有关.改变被覆盖的"put()"中的"值"似乎是一件合理的事情,但我无法弄清楚这一点.

aio*_*obe 5

您的Integer类型参数阴影java.lang.Integer.

解决方案可能只是删除类的键的类型参数(因为您似乎决定将其java.lang.Integer作为值类型).

class MyMap<K> extends TreeMap<K, Integer> {
    ...
}
Run Code Online (Sandbox Code Playgroud)

非常相似的问题:拆箱问题