클래스 내부에서 정하는 것이 아닌 사용자 호출(외부)에 의해 타입이 지정되는 것을 의미합니다.
특정 타입의 변수형에 지정되는 것이 아닌 필요에 의해 여러 가지를 타입을 사용하고 싶을 경우 사용합니다.
Box aBox = new Box(); // T를 Apple로 결정
Box oBox = new Box(); // T를 Orange로 결정
aBox.set(new Apple()); // 사과를 상자에 담는다.
oBox.set(new Orange()); // 오렌지를 상자에 담는다.
Apple ap = aBox.get(); // 사과를 꺼내는데 형 변환 하지 않는다.
Orange og = oBox.get(); // 오렌지를 꺼내는데 형 변환 하지 않는다.
System.out.println(ap); // 출력 : 이것은 사과 입니다.
System.out.println(og); // 출력 : 이것은 오렌지 입니다.
Person2<String, Integer> p = new Person2<String, Integer>();
p.set("홍길동", 25);
System.out.println(p); //출력 : 홍길동 25 세 입니다.