1. 程式人生 > >java 中instanceof、isInstance和isAssignableFrom的區別?

java 中instanceof、isInstance和isAssignableFrom的區別?

轉自:https://blog.csdn.net/edmond999/article/details/45533899

參考:https://blog.csdn.net/raylee2007/article/details/50210181

https://blog.csdn.net/kjfcpua/article/details/7045207

 

instanceof運算子 只被用於物件引用變數,檢查左邊的被測試物件 是不是 右邊類或介面的 例項化。如果被測物件是null值,則測試結果總是false。
形象地:自身例項或子類例項 instanceof 自身類   返回true
例: String s=new String("javaisland");
       System.out.println(s instanceof String); //true
 
Class類的isInstance(Object obj)方法,obj是被測試的物件,如果obj是呼叫這個方法的class或介面 的例項,則返回true。這個方法是instanceof運算子的動態等價。
形象地:自身類.class.isInstance(自身例項或子類例項)  返回true
例:String s=new String("javaisland");
      System.out.println(String.class.isInstance(s)); //true
 
Class類的isAssignableFrom(Class cls)方法,如果呼叫這個方法的class或介面 與 引數cls表示的類或介面相同,或者是引數cls表示的類或介面的父類,則返回true。
形象地:自身類.class.isAssignableFrom(自身類或子類.class)  返回true
例:System.out.println(ArrayList.class.isAssignableFrom(Object.class));  //false
      System.out.println(Object.class.isAssignableFrom(ArrayList.class));  //true