N° 01 — 목록
'WildCard' (1)
-
Backend Development/JavaJava - 11. generics
List과 List가 런타임에 같은 타입인 이유 — 제네릭과 타입 소거new ArrayList().getClass() == new ArrayList().getClass() — 이 표현식은 true다. List과 List는 런타임에 같은 클래스(ArrayList)다. 제네릭 타입 정보가 컴파일 후 사라지기 때문이다 — 이것이 타입 소거(type erasure)다. (JLS §4.6)타입 소거를 모르면, 리플렉션으로 제네릭 타입을 검사하려다 실패하고, 제네릭 배열을 만들려다 컴파일 에러를 만나고, 힙 오염(heap pollution)에 빠진다. 왜 Java는 이렇게 설계했을까? 이 글은 제네릭이 컴파일 후 어떻게 사라지는지, 그리고 와일드카드(PECS)로 무엇을 하는지 풀어간다.제네릭이 해결하는 문제 — 타..