← 질문 목록
#67깊이 0

서로 다른 List 타입 인자는 런타임에 남는가?

언어 · 런타임기초언어 의미론

객체 자체에는 보통 남지 않는다. 컴파일러가 타입 안전성을 검사한 뒤 타입 인자를 소거한다. 문자열 List와 정수 List는 런타임에 같은 클래스다.

기준컴파일 시점런타임
타입 인자검사한다객체에는 없다
형변환필요한 곳에 삽입한다실행 중 검사한다

소거 뒤 오버라이딩 시그니처가 달라질 수 있다. 컴파일러는 다형성을 유지하려고 합성 브리지 메서드를 만든다.

타입 변수의 직접 인스턴스화와 배열 생성은 제한된다. 구체 타입 인자를 붙인 타입을 instanceof로 검사하거나 소거형이 같은 메서드를 오버로드할 수도 없다.

다만 필드와 메서드 선언의 제네릭 시그니처는 클래스 파일에 남을 수 있다. 리플렉션은 그 선언 정보를 읽지만 객체의 실제 타입 인자를 복원하지는 못한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

서로 다른 List 타입 인자는 런타임에 남는가?