사용할 타입을 미리 결정하지 않고, 실제 사용하는 '생성' 시점에 타입을 결정한다.
코드를 작성하다보면, 같은 코드인데 자료형만 달라서 코드가 중복되는 경우가 존재하기도 하고
사용자에게 입력 받는 자료형을 다양하게 받고자 할 때가 있을 수도 있다.
이럴 때 제네릭을 활용하면 좋다!
public abstract class Calculator<T extends Number> {
private List<T> list;
Calculator() {
this.list = new ArrayList<>();
}
public abstract void calculate();
public void inquiryResults() {
for (T result : list) {
System.out.println(result);
}
}
public void removeResult() {
list.remove(0);
}
public void addList(T result) {
list.add(result);
}
}
실제로 클래스를 정의할 때 자료형을 설정하지 않고 나중에 구현할 때 결정할 수 있도록 한다.
여기서 자료형을 Number 에 대한 자료형만 넣기 위해 Number 를 상속받게 하였다.