无法强制转换或从 int 转换为整数,也无法在方法重写中实例化整数



以下是公共类的范围

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类。由于您的类只适用于Integers,请将其作为参数删除(将其保留在HashMap上),这样您的代码应该可以正常工作。

最新更新