제네릭 타입 이레이저(Type Erasure)는 자바 컴파일러가 제네릭 코드에서 타입 정보를 제거하는 과정이다. 이는 자바 런타임 환경에서의 호환성을 유지하고, 코드의 일관성을 보장하기 위해 필요하다.
타입 정보 제거: 컴파일러가 제네릭 타입을 컴파일할 때, 모든 제네릭 타입 정보는 제거되고, 원시 타입(Raw Type)으로 대체된다. 예를 들어, List<String>
은 컴파일 후에 단순히 List
로 변환된다.
List<String>
은 컴파일 후 List
가 된다.타입 안전성 보장: 제네릭 타입 이레이저는 컴파일 시간에 타입 체크를 수행하여 타입 안전성을 보장한다. 이는 런타임에 발생할 수 있는 타입 관련 오류를 방지한다.
List<String>
에 Integer
를 추가하려고 하면 오류를 발생시킨다.바이트코드 호환성 유지: 타입 이레이저를 통해 제네릭 코드를 기존의 비제네릭 코드와 호환되도록 한다. 이는 자바 5 이전에 작성된 코드와의 호환성을 유지하기 위함이다.
하위 호환성: 자바의 제네릭은 자바 5에서 도입되었으나, 기존의 비제네릭 코드와 호환성을 유지하기 위해 타입 이레이저가 필요하다. 이는 자바 언어의 일관성을 유지하며, 새로운 기능을 추가할 때 기존 코드를 재작성하지 않아도 되도록 한다.
런타임 오버헤드 감소: 타입 이레이저는 런타임에 제네릭 타입 정보를 유지할 필요가 없도록 하여, 런타임 오버헤드를 줄인다. 이는 성능 최적화에 도움이 된다.
단순화된 타입 시스템: 제네릭 타입 이레이저는 자바의 타입 시스템을 단순화하여, 개발자들이 제네릭을 쉽게 사용할 수 있도록 한다. 이는 코드 작성과 유지보수를 용이하게 한다.
제네릭 타입 이레이저는 자바 컴파일러가 제네릭 타입 정보를 제거하고 원시 타입으로 대체하는 과정이다. 이는 타입 안전성을 보장하고, 기존 코드와의 호환성을 유지하며, 런타임 성능을 최적화하기 위해 필요하다. 이러한 기능을 통해 자바는 강력하고 유연한 제네릭 시스템을 제공한다.