Open korjun1993 opened 1 year ago
지네릭 메서드가 무엇인가요?
static <T> void sort(List<T> list, Comparator<? super T> c)
지네릭 메서드 사용시 주의할 점
지네릭 클래스에 정의된 타입 매개변수와 지네릭 메서드에 정의된 타입 매개변수는 전혀 별개의 것이다. 같은 타입 문자 T를 사용해도 같은 것이 아니다.
class FruitBox<T> {
...
static <T> void sort(List<T> list, Comparator<? super T> c) {
...
}
}
지네릭 메서드를 호출 할 때는 타입 변수에 타입을 대입해야 한다. 하지만 대부분의 경우 컴파일러가 타입을 추정할 수 있기 때문에 생략해도 된다.
static <T extends Fruit> Juice makeJuice(FruitBox<T> box) {
String tmp = "";
for (Fruit f : box.getList()) tmp += f + " ";
return new Juice(tmp);
}
FruitBox<Apple> appleBox = new FruitBox<Apple>();
Juicer.<Apple>makeJuice(appleBox);
<Fruit>makeJuice(fruitBox); // 에러
this.<Fruit>makeJuice(fruitBox); // OK
Juicer.<Fruit>makeJuice(fruitBox); // OK