제네릭
- 클래스, 인터페이스, 메소드를 정의할 때 타입 매개변수(파라미터)를 선언하고 사용 가능
- 재사용성을 높이고 오류를 줄임
장점
여러 유형에 걸쳐 동작하는 일반화된 클래스 및 메소드 정의
자료형 한정 → 컴파일 시점 자료형 검사 가능
캐스트(형 변환) 연산자 사용 불필요
예
- ArrayList 클래스는 List 인터페이스를 구현한 클래스
제네릭 클래스
- 클래스 정의에서 클래스 이름 오른쪽에 타입파라미터를 선언
접근제어자 class 이름<T1,T2...> {...}
- 타입 파라미터는 참조형만 가능
- 필드 자료형, 메소드 반환형, 인자의 자료형으로 사용 가능
- 타입 마라미터 이름은 관례적으로 E, K, V, N, T를 사용
- 컴파일할 때 명확한 타입검사 수행 가능
- ✅메소드 호출시 인자 유형이 맞는지
- ✅메소드 호출 결과를 사용할 때 유형이 맞는지
- 자료형 매개변수로 가지는 클래스와 인터페이스를 ‘제네릭 타입’이라고 함.
- 제네릭 타입을 사용하면 ‘컴파일’ 시점에서, 사용하지 않으면 ‘실행’시 오류가 발생함.