以下是公共类的范围
private class WrapperMap<K, Integer> extends HashMap<K, Integer>{
@Override
public Integer get(Object key){
if (super.containsKey(key))
return super.get(key);
else{
return new Integer(1);
}
}
}
我尝试了很多东西来返回else块中的Integer对象1,但似乎没有任何效果。为什么不呢?
return new Integer(1);
导致Cannot instantiate the type Integer
return Integer.valueOf(1)
导致The method valueOf(int) is undefined for the type Integer
return 1
导致Type mismatch: cannot convert from int to Integer
return (Integer)1;
导致Cannot cast from int to Integer
答案 0 :(得分:3)
朋友..试试这个:
private class WrapperMap<K> extends HashMap<K, Integer>{
@Override
public Integer get(Object key){
if (super.containsKey(key))
return super.get(key);
else{
return 1;
}
}
}
WrapperMap
你不需要两个泛型变量。
Integer
中的WrapperMap<K, Integer>
被视为类型变量
由于S
的第二个类型变量HashMap<K,S>
固定为Integer
,因此WrapperMap<K>
就足够了。
祝你好运!
答案 1 :(得分:0)
只需“返回1”而不是“返回新的整数(1)”,它将被自动装箱并保持相同的返回类型。
喜欢这个。
public Integer get(Object key){
if (super.containsKey(key))
return super.get(key);
else{
return 1;
}
}
答案 2 :(得分:0)
您已将Integer
指定为类型参数,并且它会影响您想要的java.lang.Integer
类。由于您的课程仅适用于Integer
,因此请将其作为参数删除(将其保留在HashMap
上),并且您的代码应该可以正常运行。