반응형
배열 제네릭 차이
1. 배열은 공변이다.
상위 하위 타입이 존재하며, 이런 관계가 성립 될 시에는 문제가 있는 코드도 '런타임 시점'에 오류를 발견 할 수 있다.
이와는 다르게 제네릭의 경우 상 하위 관계가 성립되지 않으며, 불공변 관계이므로 서로 종속적일 수 없다.
2. 배열은 실체화 된다.
제네릭은 런타임에는 타입정보가 소거 된다. ( 컴파일에만 검사, 런타임에는 확인 하지 않는다 )
그렇기 때문에 제네릭은 컴파일시점에 안전성이 높다. (런타임에선 낮음)
배열의 경우 런타임시점에 체크를 하기때문에 런타임 시점에 안정성이 높다. 다만 컴파일시에는 체크를 하지 못한다.
제네릭 타입 시스템의 취지
>> 런타임에 ClassCastException이 발생하는 일을 막겠다 라는 시스템 취지에 어긋난다.
반응형
'1_스터디' 카테고리의 다른 글
[EffectiveJava] ITEM 33. 타입 안전 이종 컨테이너를 고려하라 (0) | 2022.08.15 |
---|---|
[EffectiveJava]ITEM 32. 제네릭과 가변인수를 함께 쓸 때는 신중하라 (0) | 2022.08.14 |
[Effectvie Java] ITEM 31. 한정적 와일드카드를 사용해 API 유연성을 높이라. (0) | 2022.08.13 |
[EffectiveJava] ITEM 30. 이왕이면 제네릭 메서드로 만들라 (0) | 2022.08.12 |
[EffectiveJava] ITEM 29. 이왕이면 제네릭 타입으로 만들라 (0) | 2022.08.11 |