Skip to content

14주차 내용 추가하기  #6

@mongzza

Description

@mongzza

와일드카드 타입 사용하는 제네릭 타입 값에 직접 접근할 때 알아둘 내용

image

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions