[java] 타입 변수의 제약 조건과 하한 경계(Bounded Wildcards)
개요
Java 제네릭을 사용할 때, 타입 변수의 제약을 설정하여 특정 타입의 하위 타입만을 허용하는 하한 경계(Bounded Wildcards)를 사용할 수 있습니다. 이 기능은 제네릭을 더욱 유연하게 활용할 수 있게 해줍니다.
타입 변수의 제약
제네릭 클래스나 메서드를 정의할 때, 특정 타입 뿐만 아니라 해당 타입의 하위 타입을 포함하여 다양한 타입을 인자로 받을 수 있습니다. 하지만 때로는 특정 타입과 그 하위 타입들만을 인자로 받기를 원할 수 있습니다. 이때 타입 변수의 제약을 설정하여 원하는 타입의 하위 타입만을 허용하는 제네릭을 정의할 수 있습니다.
하한 경계(Bounded Wildcards) 사용 예시
다음은 Box
클래스를 예로 들어, 하한 경계를 사용하는 방법을 보여줍니다.
public class Box<T> {
private T item;
public void setItem(T item) {
this.item = item;
}
public T getItem() {
return item;
}
}
위의 Box
클래스에서 setItem
메서드를 수정하여 특정 타입 Fruit
과 그 하위 타입만을 인자로 받도록 하려면 다음과 같이 하한 경계를 사용합니다.
public void setItem(Box<? extends Fruit> item) {
this.item = item;
}
결론
Java의 제네릭을 사용할 때, 타입 변수의 제약 조건과 하한 경계를 설정함으로써 보다 정교하고 안전한 코드를 작성할 수 있습니다. 하한 경계를 사용하여 특정 타입과 그 하위 타입들만을 제한하는 방법을 활용하면, 보다 강력한 제네릭 클래스나 메서드를 정의할 수 있습니다.
참고 자료
- Java Generics - Oracle Documentation