데이터의 타입을 일반화한다
제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법
JDK 1.5이전에서는 여러 타입을 사용하는 대부분의 클래스나 메소드 -> Object 타입사용
이 경우에는 반환된 Object 객체를 다시 원하는 타입으로 타입 변환해야하며, 이때 오류 발생가능성 UP
제네릭을 사용하면 컴파일 시 에 미리 타입이 정해지므로, 타입 검사나 타입 변환과 같은 번거로운 작업이 생략!
class MyArray<T> {
T element;
void setElement(T element) { this.element = element; }
T getElement() { return element; }
}
MyArray<Integer> myArr = new MyArray<>();
'T' = 타입 변수, 임의의 참조형 타입
자바에서 타입 변수 자리에 사용할 실제 타입을 명시할 때 기본타입을 바로 사용 X
Wrapper클래스를 사용해야만함
1.컴파일 시 컴파일러에 의해 자동으로 검사되어 타입 변환된다.
2. 코드 내의 모든 제네릭 타입은 제거되어, 컴파일된 class 파일에는 어떠한 제네릭 타입도 포함되지 않는다.
-> 제네릭을 사용하지 않는 코드와의 호환성을 유지하기 위해서 제거!!!