자바에서 제네릭(Generic)은 클래스나 메서드를 정의할 때 사용되는 타입 매개변수(parameter)를 의미합니다. 제네릭을 사용하면 클래스나 메서드를 작성할 때 일반적인 유형 대신에 실제 사용할 타입을 지정할 수 있습니다. 이는 코드의 재사용성과 유지 보수성을 향상시키며, 타입 안전성을 제공합니다.
제네릭은 다음과 같은 이점을 제공합니다:
타입 안전성(Type Safety): 제네릭을 사용하면 컴파일 시간에 타입 체크를 할 수 있어, 타입 관련 오류를 미리 방지할 수 있습니다. 제네릭을 사용하지 않을 경우에는 런타임 시에 타입 변환 오류가 발생할 수 있습니다.
코드의 재사용성: 제네릭을 사용하면 다양한 타입에 대해 일반적인 로직을 재사용할 수 있습니다. 클래스나 메서드를 작성할 때 타입 매개변수를 사용하여, 실제로 사용될 타입에 따라 동작을 다르게 할 수 있습니다.
컴파일러의 타입 체크: 제네릭을 사용하면 컴파일러가 타입 체크를 수행하여 오류를 찾을 수 있습니다. 이로써 실행 시에 타입 관련 예외가 발생할 가능성을 줄여줍니다.
제네릭은 클래스, 인터페이스, 메서드에 적용될 수 있습니다. 제네릭 클래스는 타입 매개변수를 클래스의 멤버 변수, 메서드 매개변수, 반환 유형 등에서 사용할 수 있습니다. 제네릭 메서드는 메서드 선언 시에 타입 매개변수를 사용하여 해당 메서드 내에서만 사용될 타입을 지정할 수 있습니다.
다음은 제네릭 클래스와 제네릭 메서드의 예제입니다
// 제네릭 클래스
class MyGenericClass<T> {
private T value;
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
}
// 제네릭 메서드
public <T> void printArray(T[] array) {
for (T element : array) {
System.out.println(element);
}
}
위의 예제에서 MyGenericClass는 제네릭 클래스로서 T라는 타입 매개변수를 사용합니다. 이 클래스는 임의의 타입의 값을 저장하고 반환하는 메서드를 제공합니다.
또한, printArray는 제네릭 메서드로서 T라는 타입 매개변수를 사용합니다. 이 메서드는 배열을 인자로 받아 배열의 요소를 출력합니다.
제네릭을 사용하면 클래스나 메서드를 일반적이면서도 유연하게 작성할 수 있으며, 타입 안전성과 코드의 재사용성을 높일 수 있습니다.