java运算符+没有为类型定义Integer,int

时间:2013-10-06 10:50:34

标签: java generics

我正在尝试实现购物车,我在Integer类中遇到了一些问题。这是代码:

public class ShoppingCart<Product, Integer> extends TreeMap<Product, Integer> {

void addToCart(Product product) {
    if (this.containsKey(product)) {
        Integer nrOfProds = this.get(product);
        this.put(product, nrOfProds + 1); //the problem is here
    } else
        this.put(product, Integer.valueOf(1)); //and also here
}
....
}

Eclipse说“operator + undefined for type(s)Integer,int”。但是我读到了关于拆箱的信息,我认为我会好的。

没关系,我试着解决这个问题,所以我尝试在nrOfProds上调用intValue()。这一次,Eclipse说“类型Integer未定义方法intValue()”。怎么会?它的类型为Integer。

再次使用s also a problem with with Integer.valueOf(1). It未定义的方法。

这有什么问题?

1 个答案:

答案 0 :(得分:14)

您已将Integer声明为类的类型参数,它会覆盖java.lang.Integer类。在声明它时,您在角括号中的类名后面给出的值是类型参数。

将班级声明更改为:

public class ShoppingCart extends TreeMap<Product, Integer>

理想情况下,您应该避免扩展TreeMap。而是将它作为我班级中的instance字段。