장바구니를 구현하려고하는데 Integer 클래스에 몇 가지 문제가 있습니다.java 연산자 + 유형에 대해 정의되지 않았습니다. 정수, 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
}
....
}
이클립스는 말한다 "연산자 + 유형 (들) 정수, INT에 대한 정의되지 않은"이 코드입니다. 그러나 나는 언 박싱에 대해 읽었으며 나는 괜찮을 것이라고 생각했다.
신경 쓰지 마라. 나는이 문제를 해결하려고 노력했다. 그래서 nrOfProds에서 intValue()를 호출 해 보았다. 이번에 Eclipse는 "intValue() 메소드는 Integer 유형에 대해 정의되지 않았습니다."라고했습니다. 어째서? Integer 유형에 대해 정의됩니다.
거기에 s also a problem with with Integer.valueOf(1). It
가 다시 정의되지 않았습니다.
무엇이 문제입니까?
TreeMap을 확장해서는 안됩니다. 클래스 내에서 * 사용해야합니다. 그렇지 않으면 누구나'shoppingCart.put (product, 67)'을 호출하고'addToCart()'메소드를 무시할 수 있습니다. –
ShoppingCart 클래스에서 TreeMap을 확장 하시겠습니까? addToCart 메소드를 사용하고 있어도, TreeMap의 모든 메소드는 여전히 public이며, 클래스의 불변 값 (의미가없는 값 삽입)을 재정의하기 위해 직접 호출 할 수 있습니다. 쇼핑 맵 클래스의 일반 (비공개) 필드가지도를 만드는 것이 좋습니다. ShoppingCart에 메소드를 추가하여 필요에 따라 맵에 추가 할 수 있습니다. – Boann