안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
강제 타입 변환은 자식 타입이 부모 타입으로 변환되어 있는 상태에서만 가능하기 때문에
아래와 같이 부모 타입의 변수가 부모 객체를 참조할 경우 자식 타입으로 변환할 수 없습니다.
Parent parent = new Parent();
Child child = (Child)parent; // 강제 타입 변환 불가
부모 변수가 참조하는 객체가 부모 객체인지 자식 객체인지 확인하는 방법이 있습니다.
instanceof 연산자를 사용하는 것입니다.
연산자의 좌항은 객체가 오고, 우항은 타입이 오는데, 좌향의 객체가 우항의 인스턴스이면 즉 우항의
타입으로 객체가 생성되었다면, true를 산출하고, 그렇지 않으면 false를 산출합니다.
boolean result = 좌항(객체) instanceof 우항(타입)
instanceof 연산자는 매객밧의 타입을 조사할 때 주로 사용합니다.
메서드 내에서 강제 타입 변환이 필요한 경우 반드시
매개값이 어떤 객체인지 instanceof 연산자로 확인하고 안전하게 강제 타입 변환을 해야합니다.
ex)
public void metohd(Parent parent) {
if(parent instanceof Child){
Child child = (Child)parent;
}
}
만약 타입을 확인하지 않고 강제 타입 변환을 시도한다면 ClassCastException 예외가 발생할 수 있습니다.
'자바' 카테고리의 다른 글
JAVA 자바 추상 메서드와 오버라이딩 (0) | 2017.03.12 |
---|---|
JAVA 자바 추상 클래스의 개념과 용도 / 추상 클래스 선언 (0) | 2017.03.12 |
JAVA 자바 강제 타입 변환 ( Casting ) / 자바 강제 타입 변환 (0) | 2017.03.12 |
JAVA 자바 매개 변수의 다형성 (0) | 2017.03.12 |
JAVA 자바 하나의 배열로 객체 관리 (0) | 2017.03.12 |