[아이템 32] 제네릭과 가변인수를 함께 쓸 때는 신중하라
Closed this issue · 2 comments
102092 commented
[아이템 32] 제네릭과 가변인수를 함께 쓸 때는 신중하라
102092 commented
... heap pollution from ...
- 현재 아이템에서 말하는 heap pollution은 타입 안전성이 깨져서, 런타임 시에 ClassCastException 에러가 발생할 수 있음을 말하는 듯 합니다.
- 그럼 heap pollution이라는 단어가 의미하는 걸 직관적으로 생각해보면, JVM Heap공간에 뭔가 오류가 내재된 상태를 의미한다고 보면 될까요?
참고 : https://en.wikipedia.org/wiki/Heap_pollution#cite_note-Java-1
david215 commented
... heap pollution from ...
- 현재 아이템에서 말하는 heap pollution은 타입 안전성이 깨져서, 런타임 시에 ClassCastException 에러가 발생할 수 있음을 말하는 듯 합니다.
- 그럼 heap pollution이라는 단어가 의미하는 걸 직관적으로 생각해보면, JVM Heap공간에 뭔가 오류가 내재된 상태를 의미한다고 보면 될까요?
참고 : https://en.wikipedia.org/wiki/Heap_pollution#cite_note-Java-1
"오류가 내재된 상태"도 물론 맞지만 더 구체적으로 설명을 하자면 Generic<A>
라는 정적 타입을 가지고 있는 변수가 Generic<B>
라는 다른 타입 매개변수를 들고있는 객체를 가리키고 있는 상황입니다. 발생할 수 있는 경우는:
- 제네릭 가변인수를 사용하는 경우.
- 배열과 제네릭을 같이 사용해 unchecked conversion warning이 발생하는 경우.
- raw type을 사용해 unchecked conversion warning이 발생하는 경우.
1번과 2번의 경우에는 각각 아이템 32와 27에 타입 안전성을 검사, 보장하는 방법이 나와있고요, 3번은 아이템 26번에서 얘기했듯이 아예 안 쓰면 됩니다.