제네릭 타입 (ex List<E>)
제네릭 인터페이스 (ex List<T>), 제네릭 클래스를 통틀어 칭하는 말
타입 매개변수와 호환이 되지 않으면 컴파일 오류를 보여줌
로(raw) 타입 (ex List)
제네릭 타입에서 타입 매개변수를 전혀 사용하지 않을 때
제네릭 타입을 정의하면 로 타입도 함께 정의됨
의도한 타입을 사용하지 않아도 런타임에 오류를 보여줌
그럼에도 제네릭 타입이 나오기 전 자바의 하위 호환성을 위해 로 타입이 자동으로 정의되는 것이다.
List vs List<Object>
List 는 타입을 신경쓰지 않겠다, List<Object> 는 모든 타입을 허용하겠다. 라고 이해할 수 있다.
예외
class 리터럴에는 로 타입만 허용된다. (List.class O, List<String>.class X)
런타임에는 매개변수 정보가 지워지므로 instanceof 연산자도 로 타입이나 비 한정적 와일드카드 타입을 사용한다.