instanceof
Java中instanceof运算符是用来指定某个对象是否是特定的类的实例,根据的返回布尔值指出是否是这个特定的类或者子类 的一个实例。
用法:
result=object instanceof class
result:布尔值,根据返回值进行判断。
object:任意对象实例。
class:任意已定义的类。
说明:
如果object是class的实例,则result返回true,否则返回false,如果object为null,返回false。
但是instanceof在Java的编译状态和运行状态是有区别的:
在编译状态时,class可以是object的超类,自身类,派生类,这三种情况在编译状态不会报错。
在运行状态时,class可以是object的超类,自身类,但不能是派生类,前两种情况返回true,第三种情况返回false,但在class为子类时编译不会报错,返回false。
//栗子
接口Person
public interface Person{
public void eat();
}
//实现接口People
public class People implements Person{
private int a=0;
@Override
public void eat(){
System.out.println("a="+a);
}
}
//子类XiaoMing
public class XiaoMing extends People{
private String name;
@Override
public void eat() {
System.out.println("+++++++++");
}
}
主函数
public static void main(String[] args) {
People p=new People();
xiaoming x=new xiaoming();
System.out.println(p instanceof Person);
System.out.println(p instanceof xiaoming); -----2
System.out.println(x instanceof Person);
System.out.println(x instanceof People);
}
注意:上面2处的代码在编译时不会报错。
运行结果:
true
false
true
true