> 文档中心 > java中instanceof用法

java中instanceof用法

1. java 中的instanceof介绍:

首先,java 中的instanceof是一个运算符,而且是二目运算符,即有两个操作数。该运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
 用法:
result = object instanceof class
参数:
Result:布尔类型
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

2. 举例说明如下:

例子如下:

interface A{} class B implements A{  } class C extends B {  }

对于以上代码,测试结果分析如下:

     boolean res;     A a=null;     B b=null;     res = a instanceof A; //因为a是null,所以结果为false     res = b instanceof B; //因为b是null,所以结果为false     a=new B();     res = a instanceof A; //因为a是B类型的实例,B又是A的一个实现类,所以结果为true     res = a instanceof B; //因为a是B类型的实例,所以结果为true     B b2=(C)new C();     res = b2 instanceof A; //因为b2是C类型的实例,而C是B的子类,B又是A的一个实现类,所以结果为true     res = b2 instanceof B; //因为b2是C类型的实例,所以结果为true     res = b2 instanceof C; //因为b2是C类型的实例,而C是B的子类,所以结果为true

全部测试代码:

package com.instanceoftest; interface A{} class B implements A{  } class C extends B {  }  class instanceoftest {  public static void main(String[] args){     A a=null;     B b=null;     boolean res;         System.out.println("instanceoftest test case 1: ------------------");       res = a instanceof A;       System.out.println("a instanceof A: " + res);             res = b instanceof B;       System.out.println("b instanceof B: " + res);           System.out.println("/ninstanceoftest test case 2: ------------------");       a=new B();     b=new B();         res = a instanceof A;     System.out.println("a instanceof A: " + res);         res = a instanceof B;     System.out.println("a instanceof B: " + res);     res = b instanceof A;     System.out.println("b instanceof A: " + res);         res = b instanceof B;     System.out.println("b instanceof B: " + res);        System.out.println("/ninstanceoftest test case 3: ------------------");     B b2=(C)new C();         res = b2 instanceof A;     System.out.println("b2 instanceof A: " + res);         res = b2 instanceof B;     System.out.println("b2 instanceof B: " + res);         res = b2 instanceof C;     System.out.println("b2 instanceof C: " + res);  }}

测试结果:

/*
result:

instanceoftest test case 1: ------------------
a instanceof A: false
b instanceof B: false

instanceoftest test case 2: ------------------
a instanceof A: true
a instanceof B: true
b instanceof A: true
b instanceof B: true

instanceoftest test case 3: ------------------
b2 instanceof A: true
b2 instanceof B: true
b2 instanceof C: true

*/

 特别说明: 接口也可以作为instanceof的右操作数。


实践是检验真理的唯一标准。