로딩
요청 처리 중입니다...

[Effective Java] 한정적 와일드카드를 사용해 API 유연성을 높이라

 [Effective Java] 한정적 와일드카드를 사용해 API 유연성을 높이라

불공변 서로 다른 타입 Type1과 Type2가 있을 때 List은 List의 하위 타입도 상위 타입도 아니다. 예를 들면 List은 List의 하위 타입이 아니다는 뜻 List에는 어떤 객체든 넣을 수 있지만 List에는 문자열만 넣을 수 있다.

즉, List은 List가 하는 일을 제대로 수행하지 못하니 하위 타입이 될 수 없다. 불공변 방식보다 유연한 무언가 와일드카드 타입을 사용하지 않는 pushAll 메서드에는 결함이 있다. src의 원소 타입과 스택의 원소 타입이 일치하면 잘 동작한다.

하지만 Stack로 선언하고 Iterable를 넣으면 Integer가 Number의 하위 타입이니 잘 동작할 것 같지만 실제로는 매개변수화 타입이 불공변이기에 오류 메시지가 뜬다. 해결법 한정적 와일드카드 타입이라는 특별한 매개변수화 타입 지원함 pu...

# EffectiveJava # java # 불공변 # 와일드카드 # 이펙티브자바 # 제네릭