Java/EffectiveJava

Effective Java Item26. 로 타입은 사용하지 말라.

Flambee 2025. 1. 24. 00:25

제네릭이란?

제네릭 클래스 or 제네릭 인터페이스 : 클래스와 인터페이스 선언에 타입 매개변수가 쓰인 것
제네릭 타입 : 제네릭 클래스와 제네릭 인터페이스를 통틀어 정의

List<E>

제네릭 타입의 구성

  • List : 로 타입(raw type)
    • 로 타입은 타입 선언에서 제네릭 타입 정보가 전부 지워진 것처럼 동작한다.
  • E : 매개변수화 타입(parameterized type)
    • List<String> 인 경우 정규 타입 매개변수 E에 해당하는 실제 타입 매개변수이다.

주제로 넘어가 로 타입을 사용하지 말라는 것은 무엇?

이러한 제네릭에 대해 매개변수화 타입을 생략하여 사용하는 경우가 있는데, 이를 로 타입으로만 사용하는 것이다. ex) List, Collection 으로만 사용

로 타입으로만 사용하면 제네릭이 안겨주는 안정성과 표현력을 모두 잃게 된다. 그렇다면, 로 타입을 사용하게 한 이유는 무엇일까? 그것은 호환성 때문이다.

로 타입을 사용하지 않고 사용하는 방법

로 타입을 사용해야하는 경우

  • class 리터럴에는 로 타입을 사용해야 한다.
  • instanceof 연산을 사용하는 경우