작성
·
272
·
수정됨
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
2
안녕하세요. 명석님
자바에서 null
값을 다른 참조 타입으로 캐스팅하는 것은 ClassCastException
을 발생시키지 않습니다. ClassCastException
은 오브젝트의 실제 타입과 캐스팅하려는 타입이 호환되지 않을 때 발생합니다. 그러나 null
은 모든 참조 타입과 호환될 수 있기 때문에, null
을 다른 어떤 참조 타입으로 캐스팅해도 문제가 발생하지 않습니다.
예를 들어, 다음 코드에서는 null
값을 Integer
타입으로 캐스팅하고 있습니다:
Integer integer = (Integer) integerBox.get();
여기서 integerBox.get()
이 null
을 반환한다면, integer
변수는 단순히 null
값을 가지게 됩니다. 이 경우 ClassCastException
은 발생하지 않습니다.
이는 Java 언어 사양의 일부로, null
은 특별한 값이며 모든 참조 타입에 대해 유효한 값으로 간주되기 때문입니다. 따라서 이러한 캐스팅은 안전하게 진행됩니다.
감사합니다.