제네릭 배열은 왜 안 될까?, TypeReference는 어떻게 런타임에 제네릭 타입 정보를 보존할까?
배열과 제네릭의 타입 소거일반적으로 제네릭은 컴파일 시점에만 컴파일을 보장하고, 런타임에는 타입을 Object로 통일 해버린다. (예외 경우로 extend로 bound를 제한하는 경우에는 아닐 수도 있다.) 이를 타입 소거라고 하는데, 이것 때문에 런타임에는 제네릭의 원래 타입을 알 수 없다.이러한 타입 소거 때문에, Java에서는 제네릭 배열 생성이 금지된다.List[] lists = new ArrayList[100]; // [] lists = new ArrayList[100]; //이렇게 하면 오류는 안 생김이러한 이유는, 배열이 런타임에 타입을 검사를 한다는게 주요한데,만약 컴파일 단계에서 잡히지 않고, List[] lists에, new ArrayList()를 넣으려고 하더라도, 제네릭은 Objec..
2024.09.26