【发布时间】:2015-03-07 06:08:32
【问题描述】:
我扩展了一个 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;
}
}
错误信息:
找不到适合 put(K, java.lang.Integer) 的方法... java.lang.Integer 无法转换为 Integer。
我知道这与泛型有关。在覆盖的“put()”中更改“值”似乎是一件合理的事情,但我想不通。
【问题讨论】:
-
作为一般的最佳实践,让
MyMap包含一个普通的TreeMap比继承TreeMap并违反其规范可能更好。
标签: java generics overriding