프로그래밍/JAVA

[JAVA] 객체 타입을 확인하는 instanceof

연유뿌린빙수 2024. 12. 15. 12:15

instanceof

- 객체 타입을 확인하는 연산자 (= 참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위한 연산자)

- 형변환 가능 여부를 확인하며, boolean 타입으로 결과를 반환

- 객체가 어떤 클래스이자, 어떤 클래스를 상속받았는지 확인할 때 사용하는 연산자

 

다음과 같은 형식으로 사용한다.

객체 instanceof 타입

 

사용 예제

class SuperClass {
	// 부모클래스 코드
}

class SubClass extends SuperClass {
	// 자식클래스 코드
}

 

public static void main(String[] args) {
	SuperClass tmpObj = new SuperClass();
    SubClass sub = new SubClass();
    
    System.out.println(tmpObj instanceof SuperClass); // true
    System.out.println(tmpObj instanceof SubClass); // false
    System.out.println(sub instanceof SuperClass); // true, 상속 받았기 때문
    System.out.println(sub instanceof SubClass); // true
}

 

 

사용예제2

public static void Func(SuperClass tmpObj) { // 부모클래스 객체 생성
		if (tmpObj instanceof SuperClass && tmpObj instanceof Sub) { // 객체 타입을 확인하는 instanceof
			
            Sub ob = (Sub)tmpObj;
            
			System.out.printf("Sub 객체 : a = %d, b = %d, c = %d, d = %d\n",
					ob.a, ob.b, ob.c, ob.d);
		} else {
			System.out.printf("SuperClass 객체 : a = %d b = $d\n",
					tmpObj.a, tmpObj.b);
		}
	}

위와 같이 부모타입을 자식타입으로 형변환하기도 가능하다.

 

- 부모객체 instanceof 부모클래스 : true

- 자식객체 instanceof 자식클래스 : true

- 부모객체 instanceof 자식클래스 : false

- 자식객체 instanceof 부모클래스 : true