我想创建一个java.util.TreeMap类的子类,以允许我添加一个增量方法:
public class CustomTreeMap<K, V> extends TreeMap<K, V> {
public void increment(Integer key) {
Integer intValue;
if (this.containsKey(key)) {
Object value = this.get(key);
if (!(value instanceof Integer)) {
// Fail gracefully
return;
} else {
intValue = (Integer) value;
intValue++;
}
} else {
intValue = 1;
}
this.put(key, intValue); // put(Integer, Integer) cannot be applied in TreeMap
}
}
Android Studio 1.0.2首先提出put(K Key, V Value)
进行自动完成,后来警告说:
put(K, V) cannot be applied in TreeMap to (java.lang.integer, java.lang.integer)
我做错了什么?
有关我采用的解决方案,请参阅here。
答案 0 :(得分:2)
如果您想创建自定义树形图以独家处理Integers
,则应将其扩展为TreeMap<K, Integer>
,而不是通用类型V
:
public class CustomTreeMap<K> extends TreeMap<K, Integer> {
...
}
这样您以后就不需要instanceof
检查。
如果您的密钥也需要是Integer
,则不要声明通用类型:
public class CustomTreeMap extends TreeMap<Integer, Integer> {
...
}
答案 1 :(得分:1)
如果它应该是Integer,那么使用Integer:
public class CustomTreeMap<K> extends TreeMap<K, Integer> {
public void increment(K key) {
Integer intValue;
if (this.containsKey(key)) {
Object value = this.get(key);
if (!(value instanceof Integer)) {
// Fail gracefully
return;
} else {
intValue = (Integer) value;
intValue++;
}
} else {
intValue = 1;
}
this.put(key, intValue); // put(Integer, Integer) cannot be applied in TreeMap
}
}