Java

Java / 제네릭(Generic) 2

Dear-J 2025. 3. 4. 06:17

타입 매개변수 제한

<T extends Animal>

>> 타입 매개변수 T를 Animal과 그 자식만 받을 수 있도록 제한을 두는 것

>> T의 상한이 Animal이 되는 것, Animal이 제공하는 메서드들을 사용 가능

 

제네릭 메서드

정의 : <T> T genericMethod(T t)

타입 인자 전달 : 메서드를 호출하는 시점

 

클래스 전체가 아니라 특정 메서드 단위로 제네릭을 도입할 때 사용

메서드를 실제 호출하는 시점에 다이아몬드를 사용해서 타입을 정하고 호출

 

static 메서드에 제네릭을 동비하려면 제네릭 메서드를 사용해야 함

 

와일드카드

컴퓨터 프로그래밍에서 *, ?와 같이 하나 이상의 문자들을 상징하는 특수 문자

>> 여러 타입이 들어올 수 있다는 뜻

 

와일드카드는 제네릭 타입이나 제네릭 메서드를 선언하는 것이 아님

>> 이미 만들어진 제네릭 타입을 활용할 때 사용

 

비제한 와일드카드

>> ?만 사용해서 제한 없이 모든 타입을 다 받을 수 있는 와일드카드

 

상한 와일드카드

<? extends Animal>

>> 제네릭 메서드와 마찬가지로 와일드카드에도 상한 제한을 둘 수 있음

 

하한 와일드카드

<? super Animal>

>> ?가 Animal 타입을 포함한 Animal 타입의 상위 타입만 입력 받을 수 있음

 

타입 이레이저

제네릭은 자바 컴파일 단계에서만 사용되고 컴파일 이후에는 제네릭 정보가 삭제됨

>> 컴파일 전인 .java에는 제네릭의 타입 매개변수가 존재하지만 이후인 자바 바이트코드 .class에는 존재하지 않음

 

런타임에 타입을 활용하는 코드는 작성할 수 없음

>> 타입 매개변수에 instanceof를 허용하지 않음

>> 타입 매개변수에 new를 허용하지 않음

'Java' 카테고리의 다른 글

Java / 컬렉션 프레임워크 - LinkedList  (0) 2025.03.04
Java / 컬렉션 프레임워크 - ArrayList  (0) 2025.03.04
Java / 제네릭(Generic) 1  (0) 2025.03.02
Java / 예외 처리 - 실습  (0) 2025.03.02
Java / 예외 처리 - 이론  (0) 2025.02.28