java 中的instanceof 是一個(gè)二元操作符(運(yùn)算符)運(yùn)算符悦析,由于是字母組成,所以是Java的保留關(guān)鍵字司光,但是和>=琅坡,<=,==屬同一類残家,它的作用是用來判斷榆俺,instanceof 左邊對(duì)象是否為instanceof 右邊類的實(shí)例,返回一個(gè)boolean類型值。還可以用來判斷子父類的所屬關(guān)系茴晋。
用法:
boolean result = object instanceof class
參數(shù):
Result:布爾類型陪捷。
Object:必選項(xiàng)。任意對(duì)象表達(dá)式诺擅。
Class:必選項(xiàng)市袖。任意已定義的對(duì)象類。
說明:
如果 object 是 class 的一個(gè)實(shí)例烁涌,則 instanceof 運(yùn)算符返回 true苍碟。如果 object 不是指定類的一個(gè)實(shí)例,或者 object 是 null撮执,則返回 false微峰。
例子如下:
package com.instanceoftest;
?interface A{}
?class B implements A{
?}
?class C extends B {
?}
?class instanceof test {
? 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("/n? instanceoftest 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
*/