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