본문 바로가기

공부

제네릭

728x90

Raw 타입은 사용하지 말라

이번 장에서는 제네릭과 함께 과거 호환성을 위한 남겨진 Raw 타입의 위험성을 설명한다. Raw 타입은 제네릭을 선언하면 함께 정의되는 타입으로, 예를 들어 `List<E>`를 선언하면, `List`로 함께 선언된다.

형태로 알 수 있듯 List는 타입 매개변수(List<E>에서 E)가 포함되지 않은 타입이다. 따라서 Raw 타입을 사용하게 되면 다음과 같은 코드가 컴파일될 수 있다.

private final Collection stamps = ...;

stamps.add(new Coin(...));

 

즉, 제네릭을 통한 타입 일반화를 컴파일 타임이 아닌, 런타임 에러로 받게된다. 이런 사용법은 제네릭의 필요성에도 위반된다.

제네릭은 일반화된 타입을 컴