본문 바로가기

Language, IDE/JAVA, android

[JAVA 자바] instanceof - 객체(클래스)의 타입판별

반응형

자바에서는 객체가 어떤 클래스나 인터페이스로부터 생성되었는지를 판별해주는 instanceof를 제공한다.



객체명 instanceof 타입(클래스명or인터페이스명)

객체가 해당 타입이면 true를 아니면 false를 리턴한다. 타입에 상위 클래스 객체명에 하위 클래스의 객체일 경우에도 true를 리턴한다.


※ 참고

타입이 상위클래스도 하위클래스도 아닐경우 에러가 난다. 타입은 해당 객체의 클래스의 상위 클래스 혹은 하위클래스여야 한다.


예제소스

class C1 {
	public C1() {}
}
class C2 extends C1{
	public C2() {}
}
class C3 extends C2 {
	public C3() {}
	
}

public class JavaTest {

	public static void main(String[] args) {
		C1 class1 = new C1();
		C2 class2 = new C2();
		C3 class3 = new C3();
		
		if(class1 instanceof C1)  //class1이 C1의 객체인경우 true
			System.out.println("class1 is C1's object 1");
		if(class2 instanceof C1)  //class2가 C1의 하위클래스인 C2의 객체인경우 true
			System.out.println("class1 is C1's object 2");
		if(class3 instanceof C1) //class3이 C1의 하위 클래스인 C2의 하위클래스인 C3의 객체인경우 true
			System.out.println("class1 is C1's object 3");
		if(class2 instanceof C3) //class2가 C3의 하위클래스이므로 false
			System.out.println("class1 is C1's object 4");
		if(class2 instanceof C2) //class2가 C2의 객체이므로 true
			System.out.println("class1 is C1's object 5");

	}

}



반응형