HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📖
공부한 책
/
📒
Effective Java
/
제네릭 소개

제네릭 소개

제네릭

제네릭은 자바 5부터 사용할 수 있음. 제네릭을 지원하기 전에는 컬렉션에서 객체를 꺼낼 때 마다 형변환을 해야 했는데 그래서 누군가 실수로 엉뚱한 타입의 객체를 넣어두면 런타임에 형변환 오류가 나고는 했음.
반면 제네릭을 사용하면 컬렉션이 담을 수 있는 타입을 컴파일러에 알려주게 되고 컴파일러는 알아서 형변환 코드를 추가할 수 있게 되어 엉뚱한 타입의 객체를 넣으려는 시도를 컴파일 과정에서 차단해줌
한글 용어
영문 용어
예
아이템
매개변수화 타입
parameterized type
List<String>
ㅤ
실제 타입 매개변수
actual type parameter
String
ㅤ
제네릭 타입
generic type
List<E>
ㅤ
정규 타입 매개변수
formal type parameter
E
ㅤ
비한정적 와일드카드 타입
unbounded wildcard type
List<?>
ㅤ
로 타입
raw type
List
ㅤ
한정적 타입 매개변수
bounded type parameter
<E extends Number>
ㅤ
재귀적 타입 한정
recursive type bound
<T extends Comparable<T>>
ㅤ
한정적 와일드카드 타입
bounded wildcard type
List<? extends Number>
ㅤ
제네릭 메서드
generic method
static <E> List<E> asList(E[] a)
ㅤ
타입 토큰
type token
String.class
ㅤ

제네릭 용어정리

  • 제네릭 클래스, 제네릭 인터페이스 : 타입 매개변수가 쓰인 클래스와 인터페이스
  • 제네릭 타입 : 제네릭 클래스와 제네릭 인터페이스를 통틀어 부를 때
  • 매개변수화 타입( parameterized type) :  List<String> 은 원소의 타입이 String인 리스트를 뜻하는 매개변수화 타입임
  • 로 타입 : 제네릭 타입을 하나 정의하면 그에 딸린 로 타입도 함께 정의된다. 로 타입이란 제네릭 타입에서 타입 매개변수를 전혀 사용하지 않을 때를 말한다.
    • 로 타입은 타입 선언에서 제네릭 타입 정보가 전부 지워진 것처럼 동작하는데, 제네릭이 도래하기 전 코드와 호환되도록 하기 위한 궁여지책이라 할 수 있음
    •