작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
126
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
혼자서 공부를 하다가 다운캐스팅 주의점에 관하여 궁금한점이 생겨서 질문드립니다.
사진처럼 코드를 작성하니 ClassCastException이 발생하고
1이아닌 "a" 처럼 문자열을 넣으면 발생하지 않더라고요
제가 어렵게 생각을 하는건지 모르겠는데 직접 정의한 클래스들로 다운캐스팅을 설명해주실때는 인스턴스의 참조값이 메모리상에 생성이 되고 없는 인스턴스로 다운캐스팅하려하면 런타임오류가 난다이런식으로 이해가 가는데 사진처럼 자바에 내장되어있는 Object나 String클래스로 저렇게 다운캐스팅할때는 어떤식으로 ClassCastException이 발생하는지 모르겠습니다.
저 코드에서 b에대한 참조값이 생성이 되는건가요?
b에 int형이 들어오든 String타입이 들어오든 b는 Object타입인건가요?
2질문이 yes라면 왜 b에 대입한 타입에따라 결과가 바뀌는지 모르겠습니다.
답변 1
0
안녕하세요. 명석님, 공식 서포터즈 David입니다.
Object b = 1;
이 수행될 때 1은 Integer로 박싱되고 박싱되어 생성된 객체의 참조값이 Obeject b에 담기게 됩니다.
따라서, Object b는 Integer 객체의 참조를 담고 있기 때문에 Integer를 String으로 타입 캐스팅하려고 할 때 할 수 없다고 오류가 발생하는 것입니다.
이와 관련된 자세한 사항은 아래 강의를 참고해 주세요.
실전 자바 - 중급 1편 래퍼클래스 오토박싱편
감사합니다.