자바의 정석 복습하기(지네릭스)

bitna's study note·2022년 6월 12일
0

자바

목록 보기
107/119

6월 13일 복습하기

1.와일드 카드<?>
(1)다형성 처럼 타입이 불일치해도 OK

"<? extends T>와일드 카드의 상한 제한.T와 그 자손들만 가능"
"<? super T>와일드 카드의 상한 제한.T와 그 자손들만 가능"
"<?>제한 없음.모든타입이 가능 <? extends Object>와 동일"

ArrayList<? extends Product>list = new ArrayList<TV>
ArrayList<? extends Product>list = new ArrayList<Audio>

(2)메서드의 매개변수에 와일드카드를 사용

//FruitBox와 그 자손들만 매개변수타입으로 들어 올수 있음
public void(FruitBox<? extends FruitBox> box){...} 

2.지네릭 메서드
메서드에 지네릭타입이 선언된 메서드(타입 변수는 메서드 내에서만 유효)

static <T> void sort(List<T> list, Comparator<? super T> c){...}

이때!!클래스에 선언된 지네릭 타입과 메서드에 지네릭 타입은 서로다르다.
메서드는 제일 가까운 타입을 참조하기때문에 메서드에 지네릭 타입을 지정해 줬으면 그타입에 따른다. 매개변수의 타입도 지네릭메서드 타입을 우선으로 따른다.

지네릭 클래스는 객체를 호출할때 지네릭 타입을 대입하듯이,
지네릭메서드는 메서드를 호출할 때마다 타입을 대입한다!!!중요!!!

3.와일드카드와 지네릭메서드의 타이
와일드카드는 하나의 참조변수로 서로 다른 타입이 대입된 여러 지네릭객체를 다루기 위함이 목적이고,
지네릭 메서드는 호출할 때마다 다른 지네릭 타입을 대입할수 있게 한것.

profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보