1. 재사용성
2. 타입 안전성
제네릭의 핵심
사용할 타입을 미리 결정하지 않는다는 점이다.
(클래스를 정의하는 시점에 결정하는 것이 아니라 실제 사용하는 생성 시점에 타입을 결정하는 것)
제네릭 타입
GenericBox<T> 를 제네릭 타입이라 한다.
GenericBox<T> 에서 T를 타입 매개변수라 한다.
한번에 여러 타입 매개변수를 선언할 수 있다.
class Data<K, V> {}
타입인자는 기본형은 사용할 수 없으며, 래퍼 클래스를 사용해야한다.
class Data<T extends Animal>{}
타입 매개변수로 값의 범위를 예측할 수 있다.
1. Animal의 자식이 들어올것이라고 예상할 수 있다. (Object와 모든 객체가 들어오는 상황을 대비가능)
2. Animal에서 정의한 메서드를 사용해서 미리 구현이 가능하다.
제네릭 메서드
<T> T genericMethod(T t){}
1. 제네릭 메서드는 클래스 전체가 아닌 특정 메서드 단위로 제네릭 도입시 사용한다.
메서드 호출시 타입인자를 전달해서 타입을 지
2. 메서드 반환 타입 왼쪽 <T> 필수이다.
<?> 와일드카드
상한 제한 방식이 제네릭과 와일드카드가 위치가 다름
제네릭: static <T extends Animal> void method(Box<T> box){}
와일드카드: static void method(Box<? extends Animal> box){}
와일드카드는 하한 지정도 가능하다.
static void method(Box<? super Animal> box){}
Animal 상위급만 인자로 받을수있다.
'공부 > Java' 카테고리의 다른 글
메모리 가시성 (0) | 2024.09.20 |
---|---|
스레드 기본 정보 (1) | 2024.09.18 |
스레드 생성과 실행 (0) | 2024.09.16 |
프로세스와 스레드란 (0) | 2024.09.16 |
래퍼, Class 클래스란 (0) | 2024.05.30 |