목표
자바의 제네릭에 대해 학습하세요.
학습할 것 (필수)
제네릭 사용법
제네릭 주요 개념 (바운디드 타입, 와일드 카드)
제네릭 메소드 만들기
Erasure
-제네릭 사용법
제네릭이란?
JDK1.5부터 새롭게 등장하였다.
제네릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일시 타입체크를 해주는
기능이다.
제네릭의 장점
타입안정성 제공.
타입체크와 형변황을 생략할수있어 코드가 간결해짐.
제네릭 클래스 선언
public class Document{
}
Document:클래스 타입
자료형
클래스 타입은 제네릭을 사용하는 원래 타입이라는 의미로 원시타입이라고 부르며
자료형에는 어떤 값도 다 넣을수있다.
-제네릭 주요 개념 (바운디드 타입, 와일드 카드)
바운디드 타입 : 특정 타입의 서브 타입으로 제한한다.
클래스나 인터페이스를 설계할때 가장 흔하게 사용한다.
와일드카드 :제네릭 클래스의 객체를 메소드의 매개변수로 받을때, 그객체의 타입변수를 제한하는것을 말한다.
와일드 카드는 기호로 "?" 로 표현되며 어떠한 타입도 될수 있다.
와일드 카드 <?> 제한종류
"<? extends T>" 와일드 카드의 상한제한, T와 그 자손들만 가능
"<? super T>"와일드 카드의 하한제한 ,T와 그 조상들만 가능
"<?>"제한없음
-제네릭 메소드 만들기
제네릭 메소드란 메소드 선언부에 제네릭 타입이 선언된 메소드를 말한다.
제네릭 메소드중 sort메서드가 있는데
public static void sort(List list, Comparator<? super T> c) {
list.sort(c);
}
이렇게 메서드의 정의된 타입의 T와 매개변수 T는 이름만 같고 별개이다.
-Erasure
제네릭의 타입소거
소거란 원소 타입을 컴파일 타임에만 검사하고 런타임에는 해당 타입 정보를 알수 없다.
컴파일 상태에서만 제약 조건을 적용하고, 런타임에는 타입에 대한 정보를 소거하는 프로세스이다.