SeouliteLab

[Java/자바] instanceof 연산자: 객체 타입 확인 본문

프로그래밍

[Java/자바] instanceof 연산자: 객체 타입 확인

Seoulite Lab 2024. 3. 19. 09:34

Java 프로그래밍에서는 instanceof 연산자를 사용하여 객체가 특정 클래스의 인스턴스인지 확인할 수 있습니다. 이를 통해 프로그램에서 객체의 타입을 확인하고, 그에 따라 적절한 동작을 수행할 수 있습니다.

1. instanceof 연산자 예제

예제 1: 클래스의 인스턴스 확인

다음 예제에서는 instanceof 연산자를 사용하여 객체가 특정 클래스의 인스턴스인지를 확인합니다.

// InstanceOfExample1.java

public class InstanceOfExample1 {
    public static void main(String[] args) {
        Object obj = "Hello";
        
        if (obj instanceof String) {
            System.out.println("obj는 String 클래스의 인스턴스입니다.");
        } else {
            System.out.println("obj는 String 클래스의 인스턴스가 아닙니다.");
        }
    }
}

출력 결과: obj는 String 클래스의 인스턴스입니다.

예제 2: 다형성 활용

다음 예제에서는 instanceof 연산자를 사용하여 다형성(polymorphism)을 활용합니다.

// InstanceOfExample2.java

class Animal {
    void sound() {
        System.out.println("동물 소리를 내다.");
    }
}

class Dog extends Animal {
    void sound() {
        System.out.println("멍멍!");
    }
}

class Cat extends Animal {
    void sound() {
        System.out.println("야옹~");
    }
}

public class InstanceOfExample2 {
    public static void main(String[] args) {
        Animal[] animals = {new Dog(), new Cat()};
        
        for (Animal animal : animals) {
            if (animal instanceof Dog) {
                Dog dog = (Dog) animal;
                dog.sound();
            } else if (animal instanceof Cat) {
                Cat cat = (Cat) animal;
                cat.sound();
            }
        }
    }
}

출력 결과:

멍멍!
야옹~

예제 3: 인터페이스의 구현 확인

인터페이스의 구현 여부도 instanceof 연산자로 확인할 수 있습니다.

// InstanceOfExample3.java

interface Drawable {
    void draw();
}

class Circle implements Drawable {
    public void draw() {
        System.out.println("원을 그립니다.");
    }
}

public class InstanceOfExample3 {
    public static void main(String[] args) {
        Circle circle = new Circle();
        
        if (circle instanceof Drawable) {
            circle.draw();
        } else {
            System.out.println("Drawable 인터페이스를 구현하지 않았습니다.");
        }
    }
}

출력 결과: 원을 그립니다.

예제 4: null 체크

null인 경우에도 instanceof 연산자를 사용할 수 있습니다.

// InstanceOfExample4.java

public class InstanceOfExample4 {
    public static void main(String[] args) {
        String str = null;
        
        if (str instanceof String) {
            System.out.println("str은 String 클래스의 인스턴스입니다.");
        } else {
            System.out.println("str은 null입니다.");
        }
    }
}

출력 결과: str은 null입니다.