以下是公共类的范围
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
朋友。。试试这个:
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
不需要两个泛型变量
CCD_ 11中的CCD_
由于HashMap<K,S>
的第二类型变量S
固定为Integer
,因此WrapperMap<K>
就足够了。
祝你好运!
只需"return 1",而不是"return new Integer(1)",它将被自动装箱并保持相同的返回类型。
就像这样。
public Integer get(Object key){
if (super.containsKey(key))
return super.get(key);
else{
return 1;
}
}
您已将Integer
指定为类型参数,并且它正在遮蔽所需的java.lang.Integer
类。由于您的类只适用于Integer
s,请将其作为参数删除(将其保留在HashMap
上),这样您的代码应该可以正常工作。