• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

캐스팅 관련 질문 있습니다.

24.05.09 20:47 작성 24.05.09 20:47 수정 조회수 110

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

package generic.ex1;

public class BoxMain2 {
    public static void main(String[] args) {
        ObjectBox integerBox = new ObjectBox();
integerBox.set(10);
        Integer integer = (Integer) integerBox.get(); //Object -> Integer 캐스팅
        System.out.println("integer = " + integer);

    }
}

위 코드에서 integerBox.set(10);을 빼고 실행해봤는데 integerBox.get()은 null인 상태인데 classCastException이 터지지 않더라고요 null인 경우면 원래 classCastException이 터지지 않나요?

답변 1

답변을 작성해보세요.

1

안녕하세요. 명석님

자바에서 null 값을 다른 참조 타입으로 캐스팅하는 것은 ClassCastException을 발생시키지 않습니다. ClassCastException은 오브젝트의 실제 타입과 캐스팅하려는 타입이 호환되지 않을 때 발생합니다. 그러나 null은 모든 참조 타입과 호환될 수 있기 때문에, null을 다른 어떤 참조 타입으로 캐스팅해도 문제가 발생하지 않습니다.

예를 들어, 다음 코드에서는 null 값을 Integer 타입으로 캐스팅하고 있습니다:

Integer integer = (Integer) integerBox.get();

여기서 integerBox.get()null을 반환한다면, integer 변수는 단순히 null 값을 가지게 됩니다. 이 경우 ClassCastException은 발생하지 않습니다.

이는 Java 언어 사양의 일부로, null은 특별한 값이며 모든 참조 타입에 대해 유효한 값으로 간주되기 때문입니다. 따라서 이러한 캐스팅은 안전하게 진행됩니다.

감사합니다.