최상위 클래스인 Object
클래스를 통해 모든 타입의 객체를 받도록 할 수는 있지만, 우리가 Pencil
클래스 객체를 넣어도 Object
를 반환하기 때문에 실제 인스턴스의 필드,메서드에 접근하기 위해서는 형변환이 필요하다.
→ 이를 해결하기 위해 제너릭을 사용할 수 있다.
제너릭을 사용한다면?
Object
타입으로 객체를 받은 뒤 형변환을 하는 과정이 필요없어진다!public Class Gifts<T extends Item> {
...
}
→ Gifts의 타입으로 Item 하위의 클래스만 올 수 있다.
public Class Gifts<T super Item> {
...
}
→ Gifts의 타입으로 Item 상위 클래스만 올 수 있다.
제너릭 메서드
매개 변수 또는 리턴 타입으로 타입 파리미터를 갖는 메서드
public T getItem() {
return item;
}