我想實現一個購物車,並且我有一些Integer類的問題。代碼如下:Java運算符+未定義類型整數,整數
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說「方法intValue()未定義Integer類型」。怎麼來的?它被定義爲Integer類型。
還有s also a problem with with Integer.valueOf(1). It
s未定義的方法。
這有什麼問題?
您不應該擴展TreeMap。你應該在自己的班級中使用它。否則,任何人都可以調用'shoppingCart.put(product,67)'並繞過你的'addToCart()'方法。 –
您確定要讓您的ShoppingCart類擴展TreeMap嗎?儘管你有一個addToCart方法,但TreeMap的所有方法仍然是公共的,並且可以直接調用以覆蓋類的不變量(插入無意義的值)。可能最好將您的地圖變成ShoppingCart類的普通(私人)字段。您可以根據需要將方法添加到ShoppingCart中,這些方法可以延遲到地圖。 – Boann