java/ㄴ CHAPTER 12. 제네릭스, 열거형, 애너테이션

CHAPTER 12. (3) 와일드 카드란? (제네릭 메서드 포함)

Astaroth아스 2020. 4. 23. 16:04

와일드 카드
 - 제네릭 타입에 다형성 적용하는 방법
 - 기호는 ? 사용
 - extends, super로 제한 가능 (상한, 하한)

<? extends T> 와일드 카드의 상한 제한, T와 그 자손들만 가능
<? super T> 와일드 카드의 하한 제한, T와 그 조상들만 가능
<?> 제한 없음. 모든 타입 가능 <? extends Object> 와 동일

ex.
// 제네릭 타입이 ? extends Product'면 Product와 그 자손들(ex.Tv, Radio) 가능
ArrayList<? extends Product> list = new ArrayList(); // 가능
ArrayList<? extends Product> list = new ArrayList(); // 가능
ArrayList<? extends Product> list = new ArrayList(); // 가능



제네릭 메서드
 - 메서드 선언부에 제네릭 타입이 선언된 메서드 (ex.Collections.sort())
 - 위치는 반환 타입 바로 앞

ex.
static <T>            void       sort(List list, Comparator<? super T> c)
        <Person>   Person
        <T>             T

☆ 제네릭 클래스에 선언된 타입 매개변수 T 와 제네릭 메서드에 선언된 타입 매개변수 T는 서로 다른 것

static멤버는 타입 매개변수 사용 불가능, but 메서드에 제네릭 타입 선언하고 사용하는 것 가능
 ㄴ 왜? 메서드에 선언된 제네릭 타입은 지역변수 선언과 같다고 생각하면 됨 (메서드 내에서만 지역적으로 사용할 것)

 

 

 

15part, 16part 스킵