extends는 <K extends T>, <? extends T> 2가지 형태로 사용이 된다. 2개의 사용법과 의미는 각각 다르게 사용된다.
<K extends T>
- 타입 파라미터에 지정되는 구체적인 타입을 제한할 경우에 사용된다.
- 클래스 선언시, 그리고 메소드의 타입파라미터에 사용이 가능하다.
- 위, 2번에서 설명한 것과 같이 T와 T의 자손 타입에 대해서만 가능하도록 제한을 한다.
//class 타입 형태로 사용
public Class MakeFood<T extends Food>{ ... }
// 메소드의 타입 파라미터 형태로 사용
public <T extends Number) int add(T t){ ...{
(메소드의 매겨변수 사용 시에는 에러가 발생한다.)
<? extends T>
참조형 매개변수의 자료형을 T와 T의 자손 타입에 대해서만 가능하도록 제한을 한다.
메소드의 매개변수, 리턴타입에 사용가능하다.
// 메소드의 매겨변수에 사용
public void printData(List<? extends Food> list){ ... }
// 메소드의 리턴타입에 사용
public List<? extends Food> printData() { ... }
출처
'JAVA' 카테고리의 다른 글
[java] 변수의 타입(자료형, data type) (0) | 2024.05.14 |
---|---|
요청 URL 가져오는 메서드들 정리 (0) | 2023.09.28 |
[java] Iterator - hasNext()와 next()의 동작 (0) | 2023.07.08 |
[java] 인스턴스 생성 (0) | 2023.03.02 |
[JAVA] Math.random() 난수 생성 (0) | 2022.11.19 |