제네릭(Generic) 이란 타입(T)을 매개변수로 가지는 클래스와 인터페이스를 정의할 수 있게 해주는 프로그래밍 기능. 제네릭을 사용하면 클래스나 인터페이스, 메서드를 정의할 때 타입을 파라미터로 전달할 수 있게 된다.
여기서 T는 타입 매개변수로, 실제 타입이 지정될 때까지 미정의 상태이다. Primitive 값은 지정할 수 없다.
제네릭을 사용하면 컴파일러가 타입을 체크하므로, 다른 타입의 객체를 넣으려고 하면 컴파일 에러가 발생한다.
List<Integer>
와 List<String>
을 위해 List
를 여러개 정의할 필요가 없다)제네릭 클래스와 메서드를 정의하는 방법은 다음과 같다.
// 제네릭 클래스 정의
public class MyContainer<T> {
private T value;
public MyContainer(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
// 제네릭 메서드 정의
public static <E> void printArray(E[] array) {
for (E element : array) {
System.out.print(element + " ");
}
}