클래스와 인터페이스 선언에 Type Parameter가 쓰이면 이를 제네릭 클래스 또는 제네릭 인터페이스라 한다.
자바에서 제네릭은 다양한 타입의 객체를 다루는 메소드나 컬렉션 클래스에 컴파일 시점에 타입 체크를 가능하게 해주는 기능을 해준다. 제네릭을 사용함으로써 타입의 안정성을 높이고, 코드의 재사용성을 향상시킬 수 있다.
제네릭 장점
제네릭 타입을 하나 정의하면 그에 딸린 로우 타입(Rwa Type)도 함께 정의 된다. 로우 타입이란, 제네릭 타입에서 타입 매개변수를 전혀 사용하지 않을 때를 말한다.
타입을 지정하지 않으면 컴파일 시점에 오류가 발생하지 않고 런타임 시점에 발생하는 문제가 생긴다. 오류는 가능한 발생 즉시, 이상적으로는 컴파일 시점에 발견하는 것이 좋다.
Sample Code
Wrong
private final Collection stamp = ...
// or
private final List stemp = ...
Right
private final Collection<Stemp> stamp = ...
// or
private final List<Stemp> stemp = ...
타입 안정성(Type Safe)이란?
타입 안정성이 프로그램의 Well-Defined를 보장하는 것을 의미한다.