wild card
-
31. 한정적 와일드카드를 사용해 API 유연성을 높이라.JAVA/Effective java 2021. 3. 16. 16:02
제네릭에서 매개변수화 타입은 불공변이라 하였다. 즉 서로 다른 타입 Type1과 Type2가 있을 때 List 은 List 의 하위 타입도 상위 타입도 아니다. List은 List의 하위 타입이 아니라는 뜻인데, 즉 List에는 어떤 객체든 넣을 수 있지만 List 에는 문자열만 넣을 수 있다. 즉 List 은 List가 하는 일을 제대로 수행하지 못하니 하위 타입이 될 수 없다. 하지만 때론 불공변 방식보다 유연한 무언가가 필요하다. 여기에 일련의 원소를 스택에 넣는 메서드를 추가해야 한다고 해보자. 이 메서드는 깨끗이 컴파일되지만 완벽하진 않다. Iterable src의 원소타입이 스택의 원소 타입과 일치하며 잘 작동한다. 하지만 Stack로 선언한 후 pushAll(intVal) 을 호출하면 어떻게..