타입 소거는 검증 뒤 T를 상한으로 바꾼다

javac가 제네릭 관계를 먼저 검사한 뒤 런타임 클래스에는 Object나 상한과 필요한 캐스팅을 남깁니다.

  1. 1

    소스

    Box<String>

  2. 2

    javac 검사

    set·get 관계

  3. 3

    T 소거

    Object 또는 bound

  4. 4

    cast 삽입

    String 반환

  5. 5

    런타임

    Box 클래스 한 벌

핵심: raw 연산이 컴파일 검사를 우회하면 삽입된 캐스팅 지점에서 뒤늦게 실패합니다.