홈 › 고급 › 01 / 10

제네릭과 와일드카드

섹션 7진행 0 / 10

7. 정리

  1. 제네릭은 타입을 파라미터로 받는 코드이며, 런타임 ClassCastException 을 컴파일 에러로 앞당긴다.
  2. JVM 은 제네릭을 모른다. 컴파일러가 검사 후 타입을 소거하고 캐스팅을 삽입한다 — 그래서 new T(), new T[], instanceof T, static T 가 불가능하다.
  3. 제네릭은 불공변이다. List<Dog> 는 List<Animal> 이 아니다. 배열의 공변성이 만든 런타임 오류를 반복하지 않기 위한 설계다.
  4. 유연성이 필요하면 와일드카드: 읽으면 ? extends, 쓰면 ? super — PECS.
  5. 실무 제네릭 타입(ApiResponse<T>, Result<T, E>, Repository<T, ID>)은 record + sealed + 패턴 매칭과 결합하면 가장 깔끔하다.

다음 레슨 02. 멀티스레드에서는 여러 스레드가 힙을 공유할 때 생기는 경쟁 조건과 그 해결책(synchronized, volatile, Atomic, ExecutorService, 가상 스레드)을 다룹니다.