와일드 카드 < ? >
: 하나의 참조 변수로 대입된 타입이 다른 객체를 참조 가능
↳ 와일드 카드를 이용해서 list라는 참조변수 하나로 서로 다른 지네릭 타입(Tv, Audio)이 대입된 객체들을 다룰 수 있음- 메소드의 매개변수에 와일드 카드를 사용
↳ Fruit의 자손인 Apple도 하나의 매개변수(box)에 들어올 수 있음
지네릭 메소드
1) 지네릭 타입이 선언된 메소드(타입 변수는 메소드 내에서만 유효)
↳ 메소드에 타입변수가 선언 된 것static <T> void sort(List<T> list, Comparator<? super T> c)
2) 클래스의 타입 매개변수
<T>
와 메소드의 타입 매개변수<T>
는 별개
3) 지네릭 메소드는 메소드를 호출할 때마다 타입을 대입해야됨(대부분 생략 가능)
→ 호출 할 때마다 다른 타입을 대입할 수 있음
(✔︎ 지네릭 클래스는 객체를 생성할 때 지네릭 타입을 대입)
4) 메소드를 호출할 때 타입을 생략하지 못하는 경우 (매우 드뭄), 앞에 클래스 이름도 생략하면 안됨
지네릭 메소드 vs 와일드 카드
↳ 위의 경우에 둘 다 쓸 수 있지만 용도가 좀 다름 ( 와일드카드를 쓸 수 없을 땐 지네릭메소드를 씀)
- 지네릭 메소드: 메소드를 호출할 때마다 다른 지네릭 타입을 대입할 수 있게 한 것
- 와일드 카드 : 하나의 참조변수로 서로 다른 타입이 대입된 여러 지네릭 객체를 다루기 위한 것
출처
- 자바의 정석 기초편 : ch 12- 12~14