Study-Mornda / Effective-Java

'Effective Java 3/E' 스터디 저장소입니다.
3 stars 0 forks source link

[아이템 29-질문] 힙 오염 #85

Closed cheewr85 closed 2 years ago

cheewr85 commented 2 years ago

[질문]

173pg

배열의 런타임 타입이 컴파일타임 타입과 달라 힙 오염을 일으킨다고 하였는데, 이를 좀 더 구체적으로 알아보면?

cheewr85 commented 2 years ago
public class HeapPollutionEx {
    public static void main(String[] args) {
        List<String> strings1 = Arrays.asList("첫 요소");
        List<String> strings2 = Arrays.asList("첫 요소");
        doSomthing(strings1, strings2);
    }

    private static void doSomthing(List<String> ... stringLists) {
        List<Integer> intList = Arrays.asList(42);
        Object[] objects = stringLists;
        objects[0] = intList; // 힙 오염 발생
        String s = stringLists[0].get(0); // ClassCastException
    }
}

참고자료

힙 오염