다형성에서 부모타입의 변수로 자식객체 고유의 메서드를 사용할 수 없다
사용하기 위해서는 다운캐스팅 해야 하는데, 이를 극복하기 위해 자바에서 제네릭을 제공한다
((Dog)a1).dogFunction();
((Cat)a2).catFunction();
// 제네릭 안하면 다운캐스팅 해야 함
AnimalMgr2<Dog> am3 = new AnimalMgr2<Dog>(d1);
AnimalMgr2<Cat> am4 = new AnimalMgr2<Cat>(c1);
Dog a1 = am3.getData();
Cat a2 = am4.getData();
a1.dogFunction(); // 강아지 고유기능
a2.catFunction(); // 고양이 고유기능
클래스명<타입> 레퍼런스 = new 생성자<타입>();
<타입1, 타입2>
여러개의 데이터 타입도 지정할 수 있다public class GenericEx1<T>{
private T data;
// 데이터 타입 자리을 사용자가 정할 수 있도록
// T로 지정한다
public GenericEx1(){}
public GenericEx1(T data){
this.data = data;
}
public T getData(){ return data; }
public void setData(T data){ this.data = data; }
제네릭이 설정된 러퍼런스를 리턴하거나 매개변수를 넘겨주는 경우에도 <타입>을 적용해 주어야 한다