Item 31 - 한정적 와일드 카드를 사용해 API 유연성을 높이라
한정적 와일드 카드를 사용해 API 유연성을 높이라
Intro
Stack 클래스의 API
public class Stack<E> {
public Stack();
public void push(E e);
public E pop();
public boolean isEmpty();
}public class Stack<E> {
public void pushAll(Iterable<E> src) {
for (E e : src) {
push(e);
}
}
}하지만 Stack로 선언한 후 pushAll(intVal)을 호출하는 경우
E 생산자(producer) 매개변수에 와일드 카드 타입을 적용한 pushAll 메서드
와일드 카드 타입을 사용하지 않은 popAll 메서드
E 소비자(consumer) 매개 변수에 와일드 카드 타입 적용한 popAll 메서드
Chooser 클래스에 와일드 카드 적용 예시
item 30의 max 메서드 수정
메서드 정의 시 비한정적 타입 매개변수와 비한정적 와일드 카드 중 어떤 방법이 좋을까?
핵심 정리
Last updated