[java] 타입 변수의 상한 경계 제한

Java에서 제네릭을 사용하면 클래스나 메서드를 정의할 때 사용할 수 있는 타입 변수를 제한할 수 있습니다. 상한 경계 제한을 사용하여 특정 타입이나 해당 타입의 하위 타입만을 사용할 수 있도록 지정할 수 있습니다.

왜 상한 경계를 사용해야 하는가?

상한 경계를 사용하면 다양한 타입 변수를 인수로 받을 수 있으면서도 해당 타입이 특정 클래스의 하위 클래스여야 하는 경우를 제한할 수 있습니다. 이는 안전한 형변환을 보장하고 프로그램의 안정성을 높일 수 있습니다.

제네릭 클래스에서 상한 경계 제한하기

public class Box<T extends Number> {
    private T value;

    public Box(T value) {
        this.value = value;
    }

    public double getValueAsDouble() {
        return value.doubleValue();
    }
}

위의 예제에서 T extends NumberBox 클래스의 제네릭 타입 TNumber 클래스의 하위 클래스이어야 한다는 것을 의미합니다.

제네릭 메서드에서 상한 경계 제한하기

public <T extends Comparable<T>> T max(T x, T y) {
    if (x.compareTo(y) > 0) {
        return x;
    } else {
        return y;
    }
}

위의 예제에서 T extends Comparable<T>max 메서드의 제네릭 타입 TComparable 인터페이스를 구현한 클래스이어야 한다는 것을 의미합니다.

마무리

Java에서 상한 경계를 사용하면 제네릭 클래스와 메서드를 보다 안전하고 유연하게 활용할 수 있습니다. 특정 타입의 제약을 줌으로써 안정성을 높일 수 있으며, 이는 유지보수가 용이한 코드를 작성하는데 큰 도움이 됩니다.

References