java中的instanceof用法

106 阅读1分钟

instanceof的作用

它的作用是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。可以用来判断继承中的子类的实例是否为父类的实现。

补充:instance是java的二元运算符,用来判断他左边的对象是否为右面类(接口,抽象类,父类)的实例

如下:

public class Test{
   public static void main(String args[]){
		class A{}
		
		class B extends A{}
		
		class C extends A{}
		
		class D extends B{}
		
		A obj = new D();
		
		System.out.println(obj instanceof B); //true
		
		System.out.println(obj instanceof C);  //false
		
		System.out.println(obj instanceof D);//true
		
		System.out.println(obj instanceof A);//true
		}
}

首先,继承是有传递性的!且子类在实例化时会先调用父类的构造方法,即D->B->A,所以第一个,第三,四个是true。

至于第二个,大家会郁闷,A obj = new D();不是向上转型了吗,嗯,确实!但对象的上转型对象的实体是子类负责创建的,即使会丢弃子类的部分方法(父类中没有的方法),但确实由他(子类)创建的。

即判断instanceof是用obj的实际类型去比较,而不是声明类型。