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

댓글

이 블로그의 인기 게시물

[Protocol] WIEGAND 통신

Orange for Oracle에서 한글 깨짐 해결책

[UI] GNB·LNB·SNB·FNB 용어 설명