제네릭 자료형
- 클래스에서 사용하는 변수의 자료형이 여러개 일 수 있고, 그 기능은 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정할 수 있다.
- 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식이다.
- 자바 10부터 자료형 추론이 가능해졌다.
<T extends 클래스>
- T 자료형 범위 제한
- 상위 클래스에서 선언하거나 정의하는 메서드만 활용 할 수 있게 제한한다.
간단한 Generic 클래스 생성 예시
public class GenericPrinter<T extends Number> {
private T anything;
public T getAnything() {
return anything;
}
public void setAnything(T anything) {
this.anything = anything;
}
@Override
public String toString() {
return "GenericPrinter{" +
"anything=" + anything +
'}';
}
}
간단한 Generic 클래스 사용 예시
public class GenericStudy {
public static void main(String[] args) {
/* String 클래스는 Number를 상속받은 클래스가 아니기 때문에 에러남
GenericPrinter<String> stringPrinter = new GenericPrinter<>();
stringPrinter.setAnything("룰루");
System.out.println(stringPrinter.getAnything());
*/
GenericPrinter<Double> doublePrinter = new GenericPrinter<>();
doublePrinter.setAnything(5.5);
System.out.println(doublePrinter.getAnything());
GenericPrinter<Integer> integerPrinter = new GenericPrinter<>();
integerPrinter.setAnything(1);
System.out.println(integerPrinter.getAnything());
}
}