Java instanceof 연산자 완벽 가이드: 기본 사용법부터 상속, 인터페이스까지
Java instanceof 연산자 완벽 가이드
Java instanceof 연산자의 동작 원리를 기본 사용법, 상속, 인터페이스 예제와 함께 명확히 설명합니다.
Java에서 instanceof 연산자는 객체가 특정 클래스나 인터페이스에 속하는지 검증합니다. 객체의 런타임 타입이 지정된 타입과 일치하면 true, 그렇지 않으면 false를 반환합니다.
objectName instanceof className;
아래는 String과 사용자 정의 클래스로 연산자를 시연하는 간단한 예제입니다.
예제: 기본 instanceof 사용법
class Main { public static void main(String[] args) { String name = "Programiz"; boolean result1 = name instanceof String; System.out.println("name is an instance of String: " + result1); Main obj = new Main(); boolean result2 = obj instanceof Main; System.out.println("obj is an instance of Main: " + result2); } }
출력
name is an instance of String: true obj is an instance of Main: true
두 검사 모두 true를 반환합니다. name이 String이고 obj가 Main 인스턴스이기 때문입니다.
참고: Java에서 String은 참조 타입이며 원시 타입이 아닙니다.
상속에서 instanceof 사용
이 연산자는 다형성 계층 구조 작업 시 매우 유용합니다. 하위 클래스 인스턴스가 슈퍼클래스 타입도 만족하는지 확인합니다.
// 슈퍼클래스 class Animal {} // 서브클래스 class Dog extends Animal {} class Main { public static void main(String[] args) { Dog d1 = new Dog(); System.out.println(d1 instanceof Dog); // true System.out.println(d1 instanceof Animal); // true } }
보시다시피 d1은 Dog이자 Animal로 인식되어 Java의 상속 모델을 반영합니다.
인터페이스에서 instanceof 사용
instanceof는 객체가 특정 인터페이스를 구현하는지도 검사합니다.
interface Animal { } class Dog implements Animal { } class Main { public static void main(String[] args) { Dog d1 = new Dog(); System.out.println(d1 instanceof Animal); // true } }
여기서 d1은 Animal을 구현하는 Dog이므로 연산자는 true를 반환합니다.
참고: 모든 Java 클래스는 궁극적으로 java.lang.Object를 확장합니다. 따라서 모든 객체는 Object 인스턴스이기도 합니다. 예:
d1 instanceof Object
이는 항상 true로 평가됩니다.