instanceof運算符、Class的isInstance( )與isAssignableFrom在功能上沒有什么區(qū)別,但是適用范圍不一樣。instanceof 是全靜態(tài)的,isInstance() 是半靜態(tài)半動態(tài)的,isAssignableFrom 是全動態(tài)的。 ------解決方案-------------------------------------------------------- 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運算符的動態(tài)等價。 形象地:自身類.class.isInstance(自身實例或子類實例) 返回true 例:String s=new String("javaisland"); System.out.println(String.class.isInstance(s)); //true Class類的isAssignableFrom(Class cls)方法,如果調用這個方法的class或接口 與 參數(shù)cls表示的類或接口相同,或者是參數(shù)cls表示的類或接口的父類,則返回true。 形象地:自身類.class.isAssignableFrom(自身類或子類.class) 返回true 例:System.out.println(ArrayList.class.isAssignableFrom(Object.class)); //false System.out.println(Object.class.isAssignableFrom(ArrayList.class)); //true
沒有搞明白所謂的全靜態(tài)、半靜態(tài)半動態(tài)和全動態(tài)之間有什么區(qū)別?
|