클래스와 인터페이스 선언에 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 = ...