C語言中文網 目錄
首頁 > Java教程 > Java反射機制 閱讀:1,472

Java什么是反射機制?反射機制的概念

Java 反射機制是 Java 語言的一個重要特性,它在服務器程序和中間件程序中得到了廣泛運用。在服務器端,往往需要根據客戶的請求,動態調用某一個對象的特定方法。此外,在 ORM 中間件的實現中,運用 java 反射機制可以讀取任意一個 JavaBean 的所有屬性,或者給這些屬性賦值。

Java 反射機制主要提供了以下功能,這些功能都位于 java.lang.reflect 包。
  • 在運行時判斷任意一個對象所屬的類。
  • 在運行時構造任意一個類的對象。
  • 在運行時判斷任意一個類所具有的成員變量和方法。
  • 在運行時調用任意一個對象的方法。
  • 生成動態代理。

眾所周知,所有 Java 類均繼承了 Object 類,在 Object 類中定義了一個 getClass() 方法,該方法返回同一個類型為 Class 的對象。例如,下面的示例代碼:
Class labelCls=label1.getClass();    //label1為 JLabel 類的對象

利用 Class 類的對象 labelCls 可以訪問 labelCls 對象的描述信息、JLabel 類的信息以及基類 Object 的信息。表 1 列出了通過反射可以訪問的信息。

表1 反射可訪問的常用信息
類型 訪問方法 返回值類型 說明
包路徑 getPackage() Package 對象 獲取該類的存放路徑
類名稱 getName() String 對象 獲取該類的名稱
繼承類 getSuperclass() Class 對象 獲取該類繼承的類
實現接口 getlnterfaces() Class 型數組 獲取該類實現的所有接口
構造方法 getConstructors() Constructor 型數組 獲取所有權限為 public 的構造方法
getDeclaredContxuectors() Constructor 對象 獲取當前對象的所有構造方法
方法 getMethods() Methods 型數組 獲取所有權限為 public 的方法
getDeclaredMethods() Methods 對象 獲取當前對象的所有方法
成員變量 getFields() Field 型數組 獲取所有權限為 public 的成員變量
getDeclareFileds() Field 對象 獲取當前對象的所有成員變量
內部類 getClasses() Class 型數組 獲取所有權限為 public 的內部類
getDeclaredClasses() Class 型數組 獲取所有內部類
內部類的聲明類 getDeclaringClass() Class 對象 如果該類為內部類,則返回它的成員類,否則返回 null

如表 1 所示,在調用 getFields() 和 getMethods() 方法時將會依次獲取權限為 public 的字段和變量,然后將包含從超類中繼承到的成員實量和方法。而通過 getDeclareFields() 和 getDeclareMethod()只是獲取在本類中定義的成員變量和方法。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo