Java反射機制獲取執行時類的完整結構
通過反射獲取執行時類的完整結構
Field、Method、Constructor、Superclass、Interface、Annotation
Ø 實現的全部介面
Ø 所繼承的父類
Ø 全部的構造器
Ø 全部的方法
Ø 全部的Field
通過反射獲取執行時類的完整結構
使用反射可以取得:
1.實現的全部介面
Ø public Class<?>[] getInterfaces()
確定此物件所表示的類或介面實現的介面。
2.所繼承的父類
Ø public Class<? Super T> getSuperclass()
返回表示此 Class 所表示的實體(類、介面、基本型別)的父類的 Class。
3.全部的構造器
Ø public Constructor[] getConstructors()
返回此 Class 物件所表示的類的所有public構造方法。
Ø public Constructor[] getDeclaredConstructors()
返回此 Class 物件表示的類宣告的所有構造方法。
Constructor類中:
Ø 取得修飾符: public int getModifiers();
Ø 取得方法名稱: public String getName();
Ø 取得引數的型別:public Class<?>[] getParameterTypes();
4.全部的方法
Ø public Method[] getDeclaredMethods()
返回此Class物件所表示的類或介面的全部方法
Ø public Method[] getMethods()
返回此Class物件所表示的類或介面的public的方法
Method類中:
Ø public Class<?> getReturnType()取得全部的返回值
Ø public Class<?>[] getParameterTypes()取得全部的引數
Ø public int getModifiers()取得修飾符
Ø public Class<?>[] getExceptionTypes()取得異常資訊
5.全部的Field
Ø public Field[] getFields()
Ø 返回此Class物件所表示的類或介面的public的Field。
Ø public Field[] getDeclaredFields()
Ø 返回此Class物件所表示的類或介面的全部Field。
Ø Field方法中:
Ø public int getModifiers() 以整數形式返回此Field的修飾符
Ø public Class<?> getType() 得到Field的屬性型別
Ø public String getName() 返回Field的名稱。
6. Annotation相關
Øget Annotation(Class annotationClass)
ØgetDeclaredAnnotations()
7.泛型相關
獲取父類泛型型別:Type getGenericSuperclass()
泛型型別:ParameterizedType
獲取實際的泛型型別引數陣列:getActualTypeArguments()
8.類所在的包 Package getPackage()
小 結:
1.在實際的操作中,取得類的資訊的操作程式碼,並不會經常開發。
2.一定要熟悉java.lang.reflect包的作用,反射機制。
3.如何取得屬性、方法、構造器的名稱,修飾符等。
瞭解更多java培訓相關技術課程歡迎關注小編!