데이터의 타입(data type)을 일반화(generalize)한다는 것을 의미
일반화란 어떤 데이터 타입이 들어오던지 상관이 없게 만든다는 뜻
즉, 외부에서 사용자에 의해 데이터 타입이 지정되는 것
제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 컴파일러에 의해 자동으로 검사되어 타입 변환이 된다. 따라서 컴파일된 class 파일에는 어떠한 제네릭 타입도 포함되지 않게 된다.
(JDK 1.5 이전에서는 반환값으로 Object 타입을 사용했었는데, 이 경우에는 반환된 Object를 원하는 타입으로 타입 변환해야 하고, 오류가 발생할 가능성도 존재)
class MyArray<T> {
T element;
void setElement(T element) { this.element = element; }
T getElement() { return element; }
}
http://www.tcpschool.com/java/java_generic_concept
https://st-lab.tistory.com/153