-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
와일드카드 타입 사용하는 제네릭 타입 값에 직접 접근할 때 알아둘 내용
List<? extends Number>
- Integer나 Long 타입을 사용하면
List<Integer>,List<Long>처럼 쓰인다고 생각하기 (Number를 상속 받은 애들이라면 모두 <> 안에 올 수 있음) - 따라서 직접 값을 추가하면 컴파일러는 정의된 타입이 Integer인지 Long인지 모르기 때문에 사용 불가능
List<? super Number> super 타입을 Number로 제한
- Integer나 Long 타입을 사용하면
List<Number>처럼 쓰인다고 생각하기 (Number의 하위는 모두 Number로 취급) - 따라서 직접 값을 추가해도 컴파일러는 Number라고 생각하기 때문에 사용 가능
- 단, extends 개념이랑 마찬가지로 Number의 상위 타입 데이터를 넣으려고 하면 컴파일러는 정확히 어떤 타입인지 알 수 없기 때문에 컴파일 에러 발생
Metadata
Metadata
Assignees
Labels
No labels
