제네릭
GENERIC
개념
향샹된 배열에서 자료를 추가할 때 자료형을 제한하는 것을 의미
< 1 >
일반
부모 배열에 자식 객체를 넣을 수 있음
반대로 자식 배열에 부모 객체를 넣을 수 없음
ArrayList<부모클래스> 부모리스트 = new ArrayList<>();
위의 배열에 자식 객체를 집어 넣을 수 있다.
부모리스트.add(new 자식클래스())
< 2 >
함수의 매개변수
함수에 제네릭이 사용될 때에는
그 객체들만 들어갈 수 있음
( 자식 객체가 못들어감 )
public void 함수(ArrayList<부모클래스> list) { }
부모 객체 배열은 들어가나 자식 객체 배열은 들어갈 수 없음
함수(부모 List)
// 함수(자식 List); <- 에러
< 3 >
제네릭의 특수한 형태
<? extends 부모클래스>
부모 클래스를 상속한 자식 클래스만 들어올 수 있음
( 부모 클래스는 에러 )
public void 함수(ArrayList<? extends 부모클래스> list) { }
자식 객체 배열만 들어가고 부모 객체 배열은 에러
함수(부모 객체 배열)
// 함수(자식 객체 배열); <- 에러
< 4 >
<? super 클래스>
자신 클래스를 포함한 부모 클래스만 들어갈 수 있음
public void 함수(ArrayList<? super 자신클래스> list) { }
함수(부모 객체 배열);
함수(자신 객체 배열);
// 함수(자식 객체 배열); <- 에러
< 5 >
<?>
모든 자료형이 가능함
public void 함수(ArrayList<?> list) { }
함수(부모 객체 배열);
함수(자신 객체 배열);
함수(자식 객체 배열);
'JAVA' 카테고리의 다른 글
Java - Stream (클래스) (0) | 2023.09.27 |
---|---|
Java - Optional (클래스) (0) | 2023.09.27 |
Java - LocalDate , LocalTime , LocalDateTime (클래스) (0) | 2023.09.26 |
Java - Calendar (클래스) (0) | 2023.09.26 |
Java - Date (클래스) , SimpleDateFormat (클래스) (0) | 2023.09.26 |