java 型別資訊 instanceof 和 isInstance區別
- class A{
- }
- class B extends A {
- }
- class C extends B {
- }
- public class tt {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- C c = new C();
- B b = new B();
- A a = new A();
- B bc = new C();
- A ac = new C();
- System.out.println(c instanceof C);
- System.out.println(c instanceof B);
- System.out.println(c instanceof A);
- System.out.println();
- System.out.println(c.getClass().isInstance(c));
- System.out.println(c.getClass().isInstance(b));
- System.out.println(c.getClass().isInstance(a));
- System.out.println();
- System.out.println(c.getClass().isInstance(bc));
- System.out.println(c.getClass().isInstance(ac));
- System.out.println();
- System.out.println(A.class.isInstance(a));
- System.out.println(A.class.isInstance(b));
- System.out.println(A.class.isInstance(c));
- System.out.println(A.class.isInstance(ac));
- System.out.println(A.class.isInstance(bc));
- System.out.println();
- System.out.println(B.class.isInstance(a));
- System.out.println(B.class.isInstance(b));
- System.out.println(B.class.isInstance(c));
- System.out.println(B.class.isInstance(ac));
- System.out.println(B.class.isInstance(bc));
- }
- }
true
true
true
true
false
false
true
true
true
true
true
true
true
false
true
true
true
true
物件 instanceof 類
obj instanceof class
如果class obj1 = obj成立的話,返回true,否則返回false
類.isInstance(物件)
class.isInstance(obj)
如果class obj1 = obj成立的話,返回true,否則返回false
看到更形象的解釋
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
相關文章
- instanceof和typeof的區別
- 高階JAVA碼農必須搞清楚它們的區別:instanceof、isInstance、isAssignableFromJava
- python資料型別判斷type與isinstance的區別Python資料型別
- python的type和isinstance的區別Python
- JAVA 基本型別與 引用型別區別Java型別
- js基本型別和引用型別區別JS型別
- Java中基本資料型別和包裝型別有什麼區別?Java資料型別
- js--typeof 和 instanceof 判斷資料型別的區別及開發中的使用JS資料型別
- C++和java多型的區別C++Java多型
- Java 型別資訊詳解和反射機制Java型別反射
- Java的基本型別和引用型別Java型別
- 基礎-JAVA集合型別主要區別Java型別
- 區別值型別資料和引用型別資料型別
- python中isinstance()和type()有什麼區別?如何使用?Python
- 從賦值看基本型別和引用型別的區別賦值型別
- Python引用型別和值型別的區別與使用Python型別
- java 方法修改主函式裡基本資料型別和引用資料型別的區別Java函式資料型別
- Golang的值型別和引用型別的範圍、儲存區域、區別Golang型別
- Java long型別和Long型別的那些事Java型別
- java基本型別和包裝型別的“==”和equals()方法Java型別
- java泛型中<?>和<T>有什麼區別?Java泛型
- JavaScript 基本資料型別和引用型別的區別詳解JavaScript資料型別
- Class.isAssignableFrom與instanceof的區別
- 從一個例子學習 instanceof 和 getclass 的區別
- JS 的型別(null 和 undefined 的區別)JS型別NullUndefined
- Java基本資料型別和引用型別 - Java那些事兒Java資料型別
- 值型別與引用型別的區別型別
- python學習之isinstance與type的區別Python
- Java泛型T與?的區別Java泛型
- Java 泛型中? super T和? extends T的區別Java泛型
- javascript原始值和引用值型別及區別JavaScript型別
- NTMySQL中varchar和char型別的區別heeMySql型別
- 巨集定義和列舉型別的區別型別
- 【Java】equals 和 == 的區別Java
- java中==和equlas區別Java
- Java和Javascript的區別JavaScript
- java和html的區別JavaHTML
- 面試官:兄弟,說說基本型別和包裝型別的區別吧面試型別