[java] 제네릭 타입의 타입 변수 제약 조건과 캐스팅
제네릭 타입을 사용할 때에는 타입 변수에 제약 조건을 설정할 수 있습니다. 이를 통해 특정한 종류의 클래스만을 제네릭 타입으로 사용하도록 할 수 있습니다. 또한, 이러한 제약 조건을 통해 제네릭 타입 변수의 명시적 캐스팅을 수행할 수 있습니다.
타입 변수 제약 조건
제네릭 타입 변수에 제약 조건을 설정하기 위해서는 extends
키워드를 사용합니다. 특정 클래스 타입 또는 인터페이스 타입을 지정하여 해당 타입 또는 해당 타입을 구현한 클래스의 인스턴스만을 받도록 제한할 수 있습니다.
아래는 제네릭 타입 변수의 제약 조건을 설정한 예시입니다.
public class Box<T extends Number> {
private T value;
public Box(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
위 예시에서 T extends Number
는 T
가 Number
클래스를 상속받는 클래스만을 사용할 수 있도록 제한하고 있습니다.
명시적 캐스팅
제네릭 타입 변수에 제약 조건을 설정한 경우, 해당 타입 변수를 사용할 때 명시적 캐스팅을 수행할 수 있습니다. 이를 통해 해당 타입 변수가 제약 조건을 충족하는지를 검사하고 안전하게 사용할 수 있습니다.
아래는 제네릭 타입 변수를 사용할 때의 명시적 캐스팅 예시입니다.
Box<Integer> intBox = new Box<>(10);
int value = intBox.getValue(); // 명시적 캐스팅을 통해 Integer를 int로 변환
위 예시에서 Box
클래스의 getValue
메서드를 통해 Integer
타입을 반환하고 있지만, 이를 int
타입으로 명시적 캐스팅하여 안전하게 사용할 수 있습니다.
제네릭 타입의 타입 변수 제약 조건과 명시적 캐스팅은 안전한 타입 사용을 위해 중요한 개념이며, 제네릭을 활용한 프로그래밍에서 필수적으로 이해해야 하는 부분입니다.
참고 문헌
- Oracle, “Java Tutorials: Generics”: https://docs.oracle.com/javase/tutorial/java/generics/index.html