instanceof關鍵字和isInstance()方法都用來檢查物件的類,那麼它們之間有什麼區別?以下這篇文章就來帶大家了解一下instanceof關鍵字和isInstance()方法的差別,希望對大家有幫助。
instanceof關鍵字和isInstance()方法都是用來檢查物件的類,都會傳回一個布林值。但是當我們想要動態檢查物件的類別時,主要差異就出現了。在這種情況下,isInstance()方法將會起作用,而無法透過instanceof運算子來實現這一點。
下面我們透過範例來具體看看instanceof關鍵字和isInstance()方法之間的差異。
使用instanceof關鍵字來檢查物件的類別
public class Test { public static void main(String[] args) { Integer i = new Integer(5); // 当i是Integer类的实例时,输出true System.out.println(i instanceof Integer); } }
輸出:
true
現在,如果我們想在執行時間檢查物件的類,那麼我們必須使用isInstance( )方法。
public class Test { // 此方法告诉我们对象是否是以字符串“c”形式传递名称的类实例。 public static boolean fun(Object obj, String c) throws ClassNotFoundException { return Class.forName(c).isInstance(obj); } public static void main(String[] args) throws ClassNotFoundException { Integer i = new Integer(5); // 当i是Integer类的实例时,输出true boolean b = fun(i, "java.lang.Integer"); // 因为i不是String类的实例,所以输出false boolean b1 = fun(i, "java.lang.String"); //当integer类扩展number类时,如果我也是number类的实例,则输出true。 boolean b2 = fun(i, "java.lang.Number"); System.out.println(b); System.out.println(b1); System.out.println(b2); } }
輸出:
true false true
註:如果我們使用未實例化的其他類別檢查對象,則instanceof關鍵字會拋出編譯時錯誤(不相容的條件運算元類型)。
public class Test { public static void main(String[] args) { Integer i = new Integer(5); //报错,因为类型不兼容:Integer不能转换为String System.out.println(i instanceof String); } }
#輸出:
demo.java:10: error: incompatible types: Integer cannot be converted to String System.out.println(i instanceof String); ^ 1 error
相關影片教學推薦:《Java教學》
#以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !
以上是Java中instanceof關鍵字和isInstance()方法的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!