<aside> 💡 제네릭이란 객체 타입을 동적으로 받고 싶을 때 사용하는 동적타입이다.
</aside>
제네릭이란 결정되지 않은 타입을 타입 변수로 처리하고 실제 사용시 구체적인 타입으로 대체하는 Java의 문법 요소다. 제네릭은 Java5 이후에 사용 가능한데, 생겨난 과정을 보면 이러하다. 동적으로 타입을 사용하고 싶은데 모든 클래스의 최상위 클래스인 Object클래스의 객체타입으로 받다보니 보다 안전하고 편리한 방식을 추구하다보니 나오게 되었다고 한다. 제네릭을 사용한다면 타입 안정성과 코드 중복을 최소화할 수 있다.
예를 들어, 정수형은 Integer
로 선언해야한다. int
의 객체타입이 Integer
이기 때문이다.
char
, int
등 Primitive type(원시 타입)은 사용할 수 없고 Reference Type(참조타입)만 가능하다.
<?>
와 같은 형태로 사용한다. 예를 들어 <? extends Integer>
는 Integer를 상속받은 자식 클래스라면 사용할 수 있다는 의미이다. <? super Integer>
는 Integer의 부모 클래스라면 사용할 수 있다는 의미이다.
제네릭은 임의로 설정가능하지만 통상적으로 자주 사용하는 제네릭 선언의 종류는 다음과 같다.
T
: TypeE
: Element