클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법
➡ 클래스 내부에서 사용할 데이터 타입을 나중에 인스턴스를 생성할 때 확정하여 사용
제네릭 타입 : 타입을 파라미터로 가지느 클래스와 인터페이스 ( 기초 자료형은 불가 )
public class 클래스명<T> { ... }
public interface 인터페이스명<T> { ... }
content
는 객체 생성시 type이 결정됨class에 여러 타입을 입력 받을때 구분하기 위해 사용
T
: 타입K
: 키V
: 값R
: 리턴타입❕ 이외의 문자도 사용가능 (받아온 타입과 설계시 내부에서 사용할 위치만 잘 맞춰주면 ⭕)
❕ T
K
V
R
은 관습적으로 사용하는 경우
public class GenericTest<A, B, C> {
private A first;
private B second;
private List<C> third;
public void setFirst(A first) {
this.first = first
}
}
✔ 위의 코드 또한 문제 없음
기호 ?
로 나타내며 어떠한 타입(클래스)도 될 수 있음
<?>
: 모든 타입 가능 == <? extends Object>
<? extends T>
: T
와 T
를 상속받은 자손들만 가능<? super T>
: T
와 T
의 조상들만 가능