[java] 제네릭 클래스의 상호 변환(Covariant Conversion)
상호 변환(Covariant Conversion)이란?
제네릭 클래스의 상호 변환은 상위 클래스 또는 인터페이스의 제네릭 타입을 하위 클래스에서 더 구체적인 타입으로 캐스팅하는 것을 의미합니다. 이를 통해 불필요한 형변환 코드를 줄이고 더 깔끔한 코드를 작성할 수 있습니다.
예를 들어, 다음과 같이 선언된 클래스가 있다고 가정해봅시다.
public class Box<T> {
// ...
}
여기서 하위 클래스인 SmallBox
가 있을 때, 상호 변환을 사용하여 Box
를 SmallBox
로 변환할 수 있습니다.
public class SmallBox extends Box<Apple> {
// ...
}
상호 변환의 장점
상호 변환을 사용하면 코드를 더 명확하고 간결하게 만들 수 있습니다. 또한 상위 클래스의 코드를 수정할 필요 없이 하위 클래스의 타입을 사용할 수 있어 유연성이 향상됩니다.
제약사항
상호 변환은 제네릭 클래스를 확장할 때만 사용할 수 있으며, 제네릭 인터페이스의 경우에도 마찬가지로 확장하여 사용해야 합니다.
상호 변환은 일반 클래스나 인터페이스에서는 제공되지 않으며, 제네릭 클래스의 경우만 활용할 수 있습니다.
이처럼, 제네릭 클래스의 상호 변환은 Java의 강력한 제네릭 기능 중 하나로, 코드의 가독성과 유연성을 높이는 데에 큰 도움을 줍니다.
참고 문헌 https://docs.oracle.com/javase/tutorial/java/generics/covariant.html