클라이언트에서 매개변수/반환값을 명시적으로 형변환
하지 않아도 된다
→ 더 안전하고, 사용하기 쉬움
제네릭을 사용하지 않은 경우
public static void makeJuice(Fruit fruit){
//fruit 를 이용해 FruitJuice를 만드는 코드
}
class Fruit {...}
class Banana extends Fruit {...}
Banana banana = new Banana();
//method사용시 형변환(Fruit -> Banana)
JuiceMaker.makeJuice((Fruit)banana);
제네릭을 사용한 경우
public static <T> void makeJuice(T fruit){
//fruit 를 이용해 FruitJuice를 만드는 코드
}
class Fruit {...}
class Banana extends Fruit {...}
Banana banana = new Banana();
//method사용시 명시적으로 형변환 해주지 않아도 됨
JuiceMaker.makeJuice(banana);