Generic 이란 결정되지 않은 타입을 파라미터로 처리하고, 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능.
public class Box<T> {
// T 를 타입 파라미터라 부름.
public T content;
}
: 결정되지 않은 타입을 파라미터로 가지는 클래스와 인터페이스를 말함.
// Product 는 제네릭 타입
public class Product <T, W > {
T a ;
W b;
}
-타입 파라미터를 갖고 있는 메서드
public <A,B,.. > TypeOsfReturn methodName(Parameter ... )
publuic <T> Box<T> boxing(T t) {
Box<T> box = new Box<>();
box.set(t);
return box;
}
public <T extends Number> boolean compare(T t1, T t2) {
double v1 = t1.doubleValue(); // doubleValue() is The method Of Number Class
double v2 = t2.doubleValue();
return v1 == v2;
Person <- Worker
Person <- Student <- HighStudent
Person <- Student <- MiddleStudent
라는 상속관계에서.
// It Can Contain Student and Student's children
typeOfReturn methodName(typeOfGeneric<? extends Student> parameterName) {...}
// It Can contain Worker and Worker's Parent whose name is Person.
typeOfReturn methodName(typeOfGeneric<? super Worker> parameterName) {...}