Я пытаюсь реализовать корзину покупок, и у меня есть некоторые проблемы с классом Integer. Это код:java operator + не определен для типа (ов) Integer, int
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, говорит "оператор + не определен для типа (ов) Integer, междунар". Но я читал о распаковке, и я думал, что все будет в порядке.
Ничего, я попытался это сделать, поэтому я попытался вызвать intValue() на nrOfProds. На этот раз 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