instanceof 연산자
if(ref instanceof ClassName)
ref 참조하고 있는 클래스의 참조변수로 ClassName 클래스를 참조 가능하면 True를 반환하는 연산.
예시
class Cake{}
class CheeseCake extends Cake {}
class StrawberryCheeseCake extends CheeseCake {}
public class example_instanceof {
public static void main(String[] args) {
Cake new_cake = new StrawberryCheeseCake();
if(new_cake instanceof Cake) {
System.out.println("True");
}
else System.out.println("False");
if(new_cake instanceof CheeseCake) {
System.out.println("True");
}
else System.out.println("False");
if(new_cake instanceof StrawberryCheeseCake) {
System.out.println("True");
}
else System.out.println("False");
}
}
결괏값
new_cake가 참조하고 있는 클래스(StrawberryCheeseCake)를 ClassName의 참조변수로 참조가 가능한지를 묻고 있는것이다.
Cake도, CheeseCake도, StrawberryCheeseCake 의 참조변수들로 StrawberryCheeseCake 클래스 참조가 가능하다. 그렇기 때문에 위의 결과가 나오게 된다.
출처 : 윤성우의 열혈Java 프로그래밍