[JAVA] 객체 타입을 확인하는 instanceof
2024. 12. 15. 12:15ㆍ프로그래밍/JAVA
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
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] StringTokenizer와 Split의 차이점 (0) | 2024.12.19 |
---|---|
[JAVA] 문자열에 적용할 수 있는 메소드들 (0) | 2024.12.15 |
[JAVA] Dto 클래스에 대하여 record로 사용하는 이유 (0) | 2024.11.27 |
[JAVA] [](배열)과 List의 차이점 (1) | 2024.10.09 |
[JAVA] 소수를 판별하는 메소드 작성하기 (0) | 2024.10.09 |