有關Java反射的注意點

1. 獲取Class對象的3種方式

  1. 類的實例對象調用getClass
  2. 類名.class
  3. Class.forName(全類名)
  4. 包裝類的TYPE屬性,如Integer.TYPE
  5. 子類使用getSuperClass()方法獲取父類類型

2. 所有類型的Class對象

// 類
Class<Object> class1 = Object.class;
// 接口
Class<Serializable> class2 = Serializable.class;
// 一維數組
Class<int[]> class3 = int[].class;
// 二維數組
Class<int[][]> class4 = int[][].class;
// 註解
Class<Override> class5 = Override.class;
// 基本數據類型
Class<Integer> class6 = int.class;
// void
Class<Void> class7 = void.class;
// Class
Class<Class> class8 = Class.class;

結果如下:

類:				class java.lang.Object
接口:			interface java.io.Serializable
一維數組:		class [I
二維數組:		class [[I
註解:			interface java.lang.Override
基本數據類型:	int
voidvoid
Class:			class java.lang.Class

3. get與getDeclared

  • get獲取當前類內所有的內容,包括繼承父類的內容
  • getDeclared只獲取當前類內定義的和重寫的
    在這裏插入圖片描述
Method[] methods = cc.getMethods();
Method[] declaredMethods = cc.getDeclaredMethods();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章