캐스팅 관련 질문 있습니다.
375
작성한 질문수 15
[질문 템플릿]
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은 특별한 값이며 모든 참조 타입에 대해 유효한 값으로 간주되기 때문입니다. 따라서 이러한 캐스팅은 안전하게 진행됩니다.
감사합니다.
제네릭 타입 매개변수 제한과 관련한 문의입니다.
0
80
3
강의가 좀 버겁다 느껴질 때 학습방법 문의
1
135
4
제네릭 반환값 및 파라미터 선언 방식의 변화 <T> T
0
61
1
new T()가 안 되는 니유
0
102
1
안녕하세요, 문제와 실행 결과가 다른 부분이 있어 제보드립니다.
0
98
2
자바 로드맵 선택 질문
0
111
2
실전 자바 중급 - 2편 후 추천 강의
0
176
2
실프로젝트에서 Java25버전 사용
0
120
1
Arrays.sort
0
68
1
블로그 작성 시, 저작권 문제에 대하여
0
166
1
중급2편 56강의 bucket.add(value); 메서드가 이해가 안됩니다.
0
94
3
pop()과 poll()의 차이
0
94
1
특정 index의 노드 조회하기 질문
0
66
2
List.of() 비어있는 불변 리스트 생성
0
81
2
문제2: 개 타입 반환
0
55
2
[리뷰] 중급2편까지 겨우 완강 했습니다.
0
113
2
문제와 풀이1 Ex2와 Ex3
0
65
2
노드 삭제시 노드 null값으로 초기화
0
77
2
강의영상에 대한 질문
0
57
1
타입 매개변수 제한
0
59
1
compareTo
0
68
1
직접 구현하는 연결리스트 3 - 추가 부분 질문있습니다
0
98
3
섹션 8-58 equals and hashcode 에서 코드가 다르게 생성됨
0
70
2
퀴즈 오류 관련 문의
0
109
1





