Generic : 결정되지 않은 타입을 파라미터로 처리하고 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능
Class,Interface 뒤에 <타입>을 명시한다
public class Box <T>{
public T content;
public boolean compare(Box<T> other){
return content.equals(other.content);
}
}
public interface Rentable <P>{
P rent();
}
Return 타입 앞에 <타입>을 명시하고 매개변수 혹은 리턴값으로 이용한다
public static <T> Box<T> boxing(T t){
Box<T> box = new Box<>();
box.setContent(t);
return box;
}
제네릭은 특정한 조건이 없으면 어떤 파라미터도 들어갈 수 있기 때문에 제한할 필요가 있을 경우에는 extends 키워드를 사용한다.
public static <T extends Number> boolean compare(T t1, T t2){
double doubleValue1 = t1.doubleValue();
double doubleValue2 = t2.doubleValue();
return doubleValue1 == doubleValue2;
}
다음 파라미터에는 Number와 상속관계인 파라미터만 들어올 수 있다