클래스를 정의할 때, 클래스 안에서 사용되는 자료형을 구체적으로 명시하지 않고
T와 같이 기호로 적어 놓는 것.
이렇게 만든 클래스는 동적 할당을 할때(new) 자료형을 사용자가 지정 가능하다
Box<String> box1 = new Box<>();
이 경우 <>안에 들어가는 자료형은 기본 자료형을 넣을 수 없고
String나 Integer와 같은 클래스형 데이터 타입만을 넣을 수 있다.
이와 비슷한 방식으로 Object를 이용하는 방법이 있다.
// Object를 이용
package ex13.example02;
class Box {
static Object date;
}
public class GenericEx02 {
public static void main(String[] args) {
Box.date = 1;
Box.date = "문자";
}
}
위 방법은 Object가 자바의 모든 클래스의 부모이기 때문에 모든 자료형을 받을 수 있기 때문에
사용이 가능하다.
하지만 위와 같은 방법을 사용하면 static을 선언 하여야 하며, 그렇기에 동적할당을 할 수 없다.
또한, 선언한 클래스의 메소드를 사용하고자 한다면 따로 다운캐스팅을 하여야 사용 가능하다.
(Object에는 선언한 클래스의 메소드가 없기 때문)
이런 식으로 Object를 사용하여 선언하는것을 풀링기술 이라고 부른다
(static를 이용하여 메모리에 띄워두고 사용하는 것)