1. 程式人生 > >java instanceof操作符

java instanceof操作符

當程式中執行向下轉型操作時,如果父類物件不是子類物件的例項,就會發生ClassCastException異常,所以在執行向下轉型之前要判斷父類物件是否為子類物件的例項。這個判斷通常使用instanceof操作符來完成。可以使用instanceof操作符判斷是否一個類實現了某個介面,也可以用它來判斷一個例項物件是否屬於一個類。

instanceof 語法

myobject instanceof ExampleClass
myobject:某類的物件引用

ExampleClass:某個類

使用 instanceof 操作符的表示式返回值為布林值。如果返回值為true,說明 myobject物件為ExampleClass的例項物件;如果返回值為false,說明myobject物件不是ExampleClass的例項物件。

package javademo;
class Quadrangle{
	public static void draw(Quadrangle q){
		//function
	}
}
class Square extends Quadrangle{
	//function
}
class Anything{
	
}
public class Parallelogram extends Quadrangle {
	public static void main(String[] args){
		Quadrangle q = new Quadrangle();//例項化父類物件
		//判斷父類物件是否為Parallelogram子類的一個例項
		if(q instanceof Parallelogram){
			Parallelogram p = (Parallelogram) q;//向下轉型操作
		}
		//判斷父類是否為Square子類的一個例項
		if(q instanceof Square){
			Square s = (Square)q;//向下轉型操作
		}
		//由於q 物件為Anything類的物件,所以這條語句是錯誤的
		//System.out.println(q instanceof Anything);
	}
}

在本例項中將instanceof 操作符與向下轉型操作符結合使用。在程式中定義了兩個類,即平行四邊形和正方形類,這兩個類分別繼承了四邊形類。在主方法中建立四邊形物件,然後使用instanceof操作符判斷四邊形類物件是否為平行四邊形的一個例項,是否為正方形的一個例項,如果判斷結果為true,將進行向下轉型操作。