我正在尝试实现购物车,我在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
未定义的方法。
这有什么问题?
答案 0 :(得分:14)
您已将Integer
声明为类的类型参数,它会覆盖java.lang.Integer
类。在声明它时,您在角括号中的类名后面给出的值是类型参数。
将班级声明更改为:
public class ShoppingCart extends TreeMap<Product, Integer>
理想情况下,您应该避免扩展TreeMap
。而是将它作为我班级中的instance
字段。