JAVA/포스팅

자바 제네릭 타입의 형변환

짜집퍼박사(짜박) 2023. 11. 19. 00:49

자바에서 제네릭 타입은 컴파일 시에 타입 체크를 수행하므로, 안전한 형변환을 지원합니다. 제네릭에서 형변환은 주로 제네릭 클래스나 메서드에서 사용되는데, 이를 제네릭 타입의 형변환이라고 합니다.

 

1. 제네릭 클래스의 형변환

일반적으로, 제네릭 클래스에서는 형변환 없이 안전하게 사용할 수 있습니다. 예를 들어

public class Box<T> {
    private T value;

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

    public T getValue() {
        return value;
    }
}

// 사용 예시
Box<String> stringBox = new Box<>("Hello");
String str = stringBox.getValue(); // 형변환 필요 없음

 

2. 제네릭 메서드의 형변환

제네릭 메서드에서는 메서드 호출 시에 형변환을 수행할 수 있습니다. 예를 들어,

public class Converter {
    public static <T> T convert(Object obj, Class<T> targetType) {
        // 형변환
        return targetType.cast(obj);
    }
}

// 사용 예시
String str = Converter.convert(42, String.class); // 형변환 수행

여기서 targetType.cast(obj)는 제네릭으로 전달된 obj를 targetType으로 형변환하는데 사용됩니다.

 

3. 와일드 카드와 형변환

와일드 카드(?)를 사용하는 경우 형변환이 조금 더 주의가 필요합니다. 와일드 카드를 사용하면 컴파일러가 알아서 형변환을 처리합니다. 예를 들어,

public static void printList(List<?> list) {
    for (Object item : list) {
        System.out.println(item);
    }
}

// 사용 예시
List<String> stringList = Arrays.asList("A", "B", "C");
printList(stringList); // 와일드 카드로 형변환 필요 없음

과 같이 메서드의 매개변수에 와일드 카드를 사용하면 형변환이 필요 없습니다.

안전한 형변환을 위해 항상 컴파일러의 경고를 주의깊게 살펴보고, 런타임에 안전한 형변환을 보장하기 위해 제대로된 제네릭 설계를 고려하는 것이 중요합니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 열거형  (0) 2023.11.19
자바 제네릭 타입의 제거  (0) 2023.11.19
자바 제네릭 메서드  (0) 2023.11.19
자바 제네릭스 와일드 카드  (0) 2023.11.19
자바 제네릭 제한된 클래스  (0) 2023.11.19