이 item의 마지막, 핵심 정리에는 다음과 같은 내용이 있습니다.
배열은 런타임에는 타입 안전한 반면, 컴파일 타임에는 그렇지 않다. 제네릭은 그 반대다.
이 말은 즉슨, 제네릭은 런타임에서 타입 안전하지 않다고 합니다.
그런데,165p.에서 3번째 문단에서는 런타임에 ClassCastException 발생을 막아준다는 제네릭 타입 시스템 취지에 어긋난다. 라고 되어있습니다.
무언가 두 문장이 모순되는 것 같은데, 제가 추측한 바로는
제네릭이 컴파일 타임에 ClassCastException을 미리 알아채고 이후 런타임에서는 타입 정보가 소거된다고 하니, 런타임에서 코드28-3처럼 ClassCastException가 발생 할 수도 있으니 런타임 타입 안전 x인걸까요?
사실 저 추측도 모순이 있는 것 같습니다. 번쩍이는 의견 부탁드리겠습니다. 👀
이 item의 마지막, 핵심 정리에는 다음과 같은 내용이 있습니다.
배열은 런타임에는 타입 안전한 반면, 컴파일 타임에는 그렇지 않다. 제네릭은 그 반대다.이 말은 즉슨, 제네릭은 런타임에서 타입 안전하지 않다고 합니다.
그런데,165p.에서 3번째 문단에서는
런타임에 ClassCastException 발생을 막아준다는 제네릭 타입 시스템 취지에 어긋난다.라고 되어있습니다.무언가 두 문장이 모순되는 것 같은데, 제가 추측한 바로는
제네릭이 컴파일 타임에 ClassCastException을 미리 알아채고 이후 런타임에서는 타입 정보가 소거된다고 하니, 런타임에서 코드28-3처럼 ClassCastException가 발생 할 수도 있으니
런타임 타입 안전 x인걸까요?사실 저 추측도 모순이 있는 것 같습니다. 번쩍이는 의견 부탁드리겠습니다. 👀