2021-06-30
kr.or.ddit.basic /T03_GenericMethodTest
1. 제너릭 메서드
- 선언 방법 : pulic < > 리턴타입 메서드명 (매개변수=파라미터)
- 제너릭 클래스가 아니어도(일반클래스) 제너릭 메서드 사용 가능
▶ 제너릭 메서드 사용 예시
2. 제한된 파라미터 타입
- 제네릭에 extends 를 지정해서 해당 클래스/메서드 + 그 자손만 올 수 있도록 제한을 건다
- super는 불가능. 상속만.
>> Number 혹은 Number의 자식 클래스라면, doubleValue() 를 사용 할 수 있을테니까 extednds Number라고 설정한 것.
>> Util2.Compare() 는 Number 혹은 그 자손만 쓸 수 있음
>> String 클래스는 Number를 상속받지 않았으므로 여기 올 수 도없고, doubleValue()도 없음
3. 와일드카드
- Why? : 타입이 일치하지 않아도 객체 / 변수 / 메서드를 사용 할 수 있다
- When? : 제너릭 클래스 or 메서드 or 인터페이스 선언 할 때 전달인자(Argument)로 사용
▶ 종류
- <? extends T> --> 와일드 카드의 상한 제한. T와 그 자손들만 가능 多
- <? super T> ----> 와일드 카드의 하한 제한. T와 그 조상들만 가능 少
- <?> ------------> 허용 가능한 모든 타입 가능. <? extends Object>
▶ 사용 예시
>> 부모 클래스 Fruit 와 상속받은 Grape / Apple 클래스
>> 부모 클래스 객체인 과일상자엔 자식(사과/포도) 담기 가능
>> 형제 클래스 객체인 사과상자엔 포도 불가능
▶ extends ? extedns T 차이점 (제너릭 T / 와일드카드 차이점)
- T는 제너릭 클래스를 생성(선언) 할 때 반드시 타입을 알려줘야 함
- ?는 사용 할 때도 아직 모름 (제너릭한 객체를 생성 할 때 알려줌)
- ---> 컴파일 에러만 막아줌
- ---> 어떤 타입을 꺼내야 할지 모르기 때문에 이 상태로는 실행 불가
▶extends T
>> 리턴타입 : 과일을 상속받은 T
>> 파라미터 : 과일을 상속받은 T를 담은 과일상자(List)
'Java' 카테고리의 다른 글
[Java] 제너릭 배열 + 와일드카드 사용 예시(수강정보) (0) | 2021.07.18 |
---|---|
[Java] 제너릭 클래스(Generic Class) (0) | 2021.07.18 |
[Java] 가변형 인수(파라미터) (0) | 2021.07.18 |