Java Heap Pollution 이란?
Heap Pollution
Java generic type에서 변수화 된 타입이 가리키는 오브젝트의 타입이 해당 변수화 된 타입의 타입과 다를 때를 의미한다.
아래 예를 3라인을 보면 Integer로 type parameter가 정의 되었으나 4라인에서 이를 String으로 변경하여 heap pollution이 발생하였다. 컴파일시(javac) -Xlint:unchecked 옵션을 붙이면 unchecked warning을 확인 할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class HeapPollutionDemo { public static void main(String[] args) { Set s = new TreeSet<Integer>(); Set<String> ss = s; // unchecked warning s.add(new Integer(42)); // another unchecked warning Iterator<String> iter = ss.iterator(); while (iter.hasNext()) { String str = iter.next(); // ClassCastException thrown System.out.println(str); } } } |
출처: https://en.m.wikipedia.org/wiki/Heap_pollution
댓글
댓글 쓰기