[java] 와일드 카드

sesame·2021년 8월 4일
0

Java

목록 보기
22/25

> 와일드 카드

제네릭의 단점

선언된 타입으로만 매개변수입력해야함
상속받은 클래스, 부모클래스를 매개변수로 사용하고 싶어도 불가능함
어떤 타입이 오더라도 상관이 없는 경우에는 대응하기 불편

이러한 제네릭의 단점을 해결할 수 있는 와일드 카드를 사용!

타입 파라미터가 유의미하게 사용되지 않는다면 와일드카드를 사용한다.
데이터 타입보다 인자로 넘어오는 타입 메소드를 중심에 둔다.

List<?> list = new ArrayList<>()  //제한없음, Object로 정의되어서 사용된다.

List<? extends A> list = new ArrayList<>();  //상위 클래스 제한
//?파라미터가 Object의 자식
//특정 클래스의 자식 클래스만을 인자로 받겠다는 선언

List<? super A> list = new ArrayList<>();    //하위 클래스 제한
//?파라미터가 A 클래스의 부모
//A클래스의 부모인 어떤 객체도 인자로 올 수 있지만, 사용할 때 Object로 취급

0개의 댓글