[java] 제너릭(generic)이란?

제너릭

제너릭(generic)이란?

  • 자바에서 제너릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미함
  • 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법

제너릭의 선언 및 생성

class MyArray<T> {
    T element;
    void setElement(T element) { this.element = element; }
    T getElement() { return element; }
}

//MyArray 클래스에 사용된 타입 변수로 Integer타입을 사용하는 예제
MyArray<Integer> myArr = new MyArray<Integer>();
MyArray<Integer> myArr = new MyArray<>(); //Java SE 7 인스턴스 생성시 타입 생략 가능

제너릭의 제거 시기

다양한 제너릭 표현

타입 변수의 제한

제너릭 메소드(generic method)

제너릭 메소드란 메소드의 선언부에 타입 변수를 사용한 메소드를 의미함

//예시 1
public static <T> void sort( ... ) { ... }

//예시 2
class AnimalList<T> {
    ...
    public static <T> void sort(List<T> list, Comparator<? super T> comp) {
        ...
    }
    ...
}

와일드카드의 사용

  • 와일드카드(wild card)란 이름에 제한을 두지 않음을 표현하는 데 사용되는 기호를 의미
  • 물음표(?) 기호를 사용하여 이러한 와일드 카드를 사용할 수 있음