[Java] instanceof 연산자

Bam·2024년 3월 3일
0

Java

목록 보기
37/98
post-thumbnail

객체 형변환포스트와 이어지면서도 밀접한 관련이 있습니다. 먼저 읽고 오시는 것을 권장드립니다.

instanceof

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로 판정되는 경우에만 객체 형변환을 수행하면 안정적인 프로그래밍을 할 수 있게됩니다.

0개의 댓글