저우즈밍 님의 "JVM 밑바닥까지 파헤치기" 책을 정리한 포스팅 입니다
1. 제네릭
- 매개 변수화된 타입 또는 매개 변수화된 다형성
타입 소거
동작 원리
- 컴파일 타임에만 타입 정보 확인
- 런타임에는 타입 정보 제거
- 원시타입으로 변환됨
- 타입이 같은 모든 제네릭 인스턴스의 공통 상위 타입
- 타입캐스팅 관련 바이트코드가 자동으로 삽입됨
특징
- 제네릭 타입과 상관없이 타입이 동일함
장점
하위 호환성
- 현재 버전보다 낮은 버전에서 실행될 수 있음
타입 안정성
- 컴파일 타임에 타입 체크
단점
제약사항
if (item instanceof E) {} // X
E newItem = new E(); // X
E[] itemArray = new E[10]; // X
- 인스턴스 여부 판단 불가
- 제네릭으로 객체 생성 불가
- 제네릭으로 배열 생성 불가
오버로딩 불가
- 타입 소거로 인해 원시타입만 남아 시그니처가 동일해짐
기본 타입 지원 X
- 기본 타입은 형변환 불가
- 연산 시, 언박싱 / 오토박싱 수행 지원
2. 오토박싱, 언박싱
- 래퍼 타입 / 복원 메서드로 자동 변환됨
'Java' 카테고리의 다른 글
[JVM 밑바닥까지 파헤치기] 11-2. 백엔드 컴파일과 최적화: JIT 컴파일러 (0) | 2024.12.25 |
---|---|
[JVM 밑바닥까지 파헤치기] 11-1. 백엔드 컴파일과 최적화: 백엔드 컴파일 (0) | 2024.12.25 |
[JVM 밑바닥까지 파헤치기] 10-1. 프런트엔드 컴파일과 최적화: 프런트엔드 컴파일 (0) | 2024.12.24 |
[JVM 밑바닥까지 파헤치기] 9. 클래스 로딩과 실행 서브시스템, 사례와 실전 (0) | 2024.12.24 |
[JVM 밑바닥까지 파헤치기] 8-2. 바이트코드 실행 엔진: 바이트코드 해석 (0) | 2024.12.24 |