와일드 카드?
: 여러 가지 타입의 매개변수를 사용하기 위해서
<? extends T> 와일드 카드의 상한 제한. T와 그 자손들만 가능
<? super T> 와일드 카드의 하한 제한. T와 그 조상들만 가능
<?> 제한 없음. 모든 타입이 가능. <? extends Object>와 동일
※ 와일드 카드에는 '&' 사용불가.
class Juicer {
static Juice makeJuice(FruitBox<? extends Fruit> box) { // <Fruit>으로 지정
String tmp = "";
for(Fruit f : box.getList()) tmp += f + " ";
return new Juice(tmp);
}
}
Comparator에는 항상 <? super T>가 습관적으로 따라 붙는다.
class FruitComp implements Comparator<Fruit> {
public int compare(Fruit t1, Fruit t2) {
return t1.weight - t2.weight;
}
}
// List<Apple>과 List<Grape>를 모두 Comparator<Fruit>으로 정렬
Collections.sort(appleBox.getList(), new FruitComp());
Collections.sort(grapeBox.getList(), new FruitComp());
'Language > java' 카테고리의 다른 글
[Java] 지네릭스_지네릭 타입의 형변환 (0) | 2022.07.29 |
---|---|
[Java] 지네릭스_지네릭 메서드 (0) | 2022.07.29 |
[Java] 지네릭스_제한된 지네릭 클래스 (1) | 2022.07.29 |
[Java] 지네릭스_지네릭 클래스의 객체 생성과 사용 (0) | 2022.07.29 |
[Java] 지네릭스란? (0) | 2022.07.28 |
댓글