제네릭이란?
- 자바에서 제네릭이란 데이터의 타입을 일반화 하는 것을 의미함
- 클래스나 메서드에서 사용할 내부 데이터 타입을 컴파일시에 미리 지정해, 객체의 타입 안정성을 높이며, 타입 검사에 필요한 노력을 줄일 수 있음
class MyArray<T> {
T element;
void setElement(T element) { this.element = element; }
T getElement() { return element; }
}
MyArray<Integer> myArr = new MyArray<Integer>();
MyArray<Integer> myArr = new MyArray<>()
- 제네릭은 컴파일시 컴파일러에 의해 자동으로 타입이 변환되어 제거됨
- 만약 제네릭에 타입 제한을 걸 경우 extends 키워드를 사용
class LandAnimal { ... }
class AnimalList<T extends LandAnimal> { ... }
interface WarmBlood { ... }
class AnimalList<T extends WarmBlood> { ... }
class AnimalList<T extends LandAnimal & WarmBlood> { ... }
제네릭 메서드
class AnimalList<T> {
...
public static <V> void sort(List<V> list, Comparator<? super T> comp) {
...
}
...
}