자바

JAVA 자바 객체 타입 확인 ( instanceof)

알통몬_ 2017. 3. 12. 19:40
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

객체 타입 확인 ( instanceof )

강제 타입 변환은 자식 타입이 부모 타입으로 변환되어 있는 상태에서만 가능하기 때문에 

아래와 같이 부모 타입의 변수가 부모 객체를 참조할 경우 자식 타입으로 변환할 수 없습니다.


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 예외가 발생할 수 있습니다.

반응형