2

我正在尝试实现购物车,但 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 说“运算符 + 未定义类型整数,整数”。但我读到了拆箱,我想我会没事的。

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

还有s also a problem with with Integer.valueOf(1). It未定义的方法。

这有什么问题?

4

1 回答 1

14

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

将类声明更改为:

public class ShoppingCart extends TreeMap<Product, Integer>

理想情况下,您应该避免扩展TreeMap. 而是将其作为instance我班上的一个领域。

于 2013-10-06T10:51:29.397 回答