제네릭은 자바에서 타입 안정성을 제공하고, 재사용성을 높이기 위해 도입된 기능입니다. 제네릭을 사용하면 컴파일 시에 타입 체크를 할 수 있고, 타입 변환에 따른 오류를 방지할 수 있습니다.
제네릭 사용법
제네릭은 클래스, 인터페이스, 메서드를 정의할 때 사용할 수 있습니다. 아래는 간단한 제네릭 클래스의 예시입니다.
public class Box<T> {
private T value;
public void setValue(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
위의 코드에서 T는 타입 파라미터로, Box 클래스를 생성할 때 실제 타입으로 대체됩니다. 예를 들어 Box
제네릭 메서드
메서드에서 제네릭을 사용할 수도 있습니다. 제네릭 메서드를 정의할 때는 리턴 타입 앞에 타입 파라미터를 추가하면 됩니다. 아래는 예시입니다.
public class Box<T> {
private T value;
public void setValue(T value) {
this.value = value;
}
public T getValue() {
return value;
}
public <U> void printValue(U value) {
System.out.println(value);
}
}
위의 코드에서 printValue 메서드는 제네릭 메서드로, 파라미터로 전달된 값을 출력하는 기능을 합니다.
제네릭 제한
제네릭은 타입 파라미터에 제한을 둘 수도 있습니다. 예를 들어, 특정 클래스의 하위 클래스만 타입 파라미터로 받을 수 있도록 제한할 수 있습니다. 아래는 예시입니다.
public class Box<T extends Number> {
private T value;
public void setValue(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
위의 코드에서 T는 Number 클래스를 상속받는 타입으로 제한되어 있습니다. 따라서 Box 클래스를 생성할 때 타입 파라미터로 Integer, Double 등 Number 클래스의 하위 클래스만 지정할 수 있습니다.
결론
제네릭은 자바에서 타입 안정성을 제공하고 재사용성을 높이기 위한 기능입니다. 타입 파라미터를 이용하여 클래스, 인터페이스, 메서드를 정의하고 사용할 수 있으며, 타입 파라미터에 제한을 둘 수도 있습니다. 제네릭을 적절히 사용하여 프로그램의 안정성과 유연성을 개선할 수 있습니다.