타입 소거와 런타임 한계 예제가 실행되는 순서
컴파일러가 타입 관계 검사에서 시작해 필요한 런타임 타입은 토큰으로 전달까지 값과 책임이 이동한다.
-
1
컴파일러가 타입 관계 검사
경계가 없으면 Object, T extends Number면 Number로 바뀝니다.
-
2
바이트코드에서는 경계 타입으로 소거
new T[10]이나 new List[10]은 런타임 배열 검사가 소거된 원소 타입을 확인할 수 없어 금지됩니다.
-
3
필요한 런타임 타입은 토큰으로 전달
value instanceof List는 가능하지만 List인지 직접 검사할 수 없습니다.
실행 순서 두 List의 구체 타입 인자는 달라도 런타임 클래스는 같은 구현이며 배열 생성에는 Class 토큰을 전달했습니다.