Java之instanceof關鍵字

instanceof關鍵字用法

instanceof運算符的前一個操作符是一個引用變量,後一個操作數通常是一個類(或者接口) 用於判斷前面的對象是否是後面的類、或者其子類、實現類的實例。 如果是返回true,否則返回false。

使用instanceof關鍵字做判斷時, instanceof 操作符的左右操作數必須有繼承或實現關係

定義接口IMammal,接口的實現類Whale
定義普通類Father,及其子類Son

interface IMammal{}
class Father{}
class Whale implements IMammal{}
class Son extends Father {}

public class Test {

	public static void main(String[] args) {
	//instanceof 用於判斷一個對象是不是某個類或子類創建的;判斷對象是不是一個接口的實現類創建的
		
		String str = "Jim";
		Son son = new Son();
		System.out.println(str instanceof String);
		System.out.println(str instanceof Object);
		System.out.println(son instanceof Son);
		System.out.println(son instanceof Object);
	}
}

結果:

true
true
true
true

但當比較的兩個不存在繼承或實現關係時:
一定要首先進行向上轉型,然後纔可用instanceof關鍵字進行判斷,這是基本操作規範。

interface IMammal{}
class Father{}
class Whale implements IMammal{}
class Son extends Father {}

public class Test {

	public static void main(String[] args) {
		
		Object str = new String("Jim");//將String類型變量上轉型爲Object類型
		Object a = 1;
		Object son = new Son();//將Son類型變量上轉型爲Object類型
		System.out.println(str instanceof Son);
		System.out.println(son instanceof String);
		System.out.println(a instanceof Son);
		System.out.println(a instanceof Integer);
	}
}

結果:

false
false
false
true
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章