Generic 타입에는 <?>도 존재한다.
?는 알수없는 타입이며, 사용법으로는 아래와같다
<?> : 모든 객체 자료형, 내부적으로는 Object로 인식 - 와일드 카드, 제한 없음
<? super 객체형> : 명시된 객체자료형의 상위 객체, 내부적으로는 Object로 인식 - 하위 클래스 제한
<? extends 객체자료형> : 명시된 객체자료형을 상속한 하위객체, 내부적으로는 명시된 객체 자료형으로 인식 - 상위 클래스 제한
제네릭 클래스
class GenericClass<K, V> {
private K first; // K 타입(제네릭)
private V second; // V 타입(제네릭)
}
제네릭 메서드
public <T> Box<T> genericMethod(T t){ ... } => public <타입파라미터> 리턴타입 메서드명 (매개변수) { ... }
클래스는 타입파라미터가 뒤에 메서드는 앞에