객체 형변환포스트와 이어지면서도 밀접한 관련이 있습니다. 먼저 읽고 오시는 것을 권장드립니다.
insetanceof
연산자는 참조 변수의 인스턴스 타입을 알기위해 사용되는 연산자입니다.
변수 instanceof 타입
결과는 참조 변수와 타입이 일치하면 true, 아니면 false를 반환합니다.
객체 형변환포스트에서 사용했던 예제를 가져와서 실험해보겠습니다.
public class Main {
public static void main(String[] args) {
Fruit fruit = new Apple("Red", 4000);
if (fruit instanceof Apple) {
System.out.println("fruit는 Apple 타입");
}
if (fruit instanceof Fruit) {
System.out.println("fruit는 Fruit 타입");
}
}
}
Fruit
는 부모 타입, Apple
자식 타입입니다. 따라서 fruit
는 자동 형변환에 의해서 Apple
타입인 상태입니다. 그렇기 때문에 fruit instanceof Apple
은 당연히 true
이기에 if
문이 실행됩니다.
그 밑의 fruit instanceof Fruit
는 Apple이 Fruit의 자식 클래스이기 때문에 Apple이 Fruit 객체 타입을 포함하고 있다고 판정하므로 true
가 되어 if
문을 실행합니다.
이러한 결과로 알 수 있는 것은 instanceof
연산자를 사용했을 때, 결과가 true
라면 객체 형변환을 수행할 수 있다는 것을 알 수 있습니다.
따라서 객체 형변환을 할 때 먼저 instanceof
연산자와 if
구문을 통해서 true로 판정되는 경우에만 객체 형변환을 수행하면 안정적인 프로그래밍을 할 수 있게됩니다.