Java Reflection (JAVA反射)詳解(一)

來源:互聯網
上載者:User
 Reflection是Java 程式開發語言的特徵之一,它允許運行中的 Java 程式對自身進行檢查,或者說"自審",並能直接操作程式的內部屬性。例如,使用它能獲得 Java 類中各成員的名稱並顯示出來。

  Java 的這一能力在實際應用中也許用得不是很多,但是在其它的程式設計語言中根本就不存在這一特性。例如,Pascal、C 或者 C++  中就沒有辦法在程式中獲得函數定義相關的資訊。

  JavaBean 是 reflection 的實際應用之一,它能讓一些工具可視化的操作軟體組件。這些工具通過 reflection 動態載入並取得 Java 組件(類) 的屬性。

  1. 一個簡單的例子

  考慮下面這個簡單的例子,讓我們看看 reflection 是如何工作的。

import java.lang.reflect.*;
public class DumpMethods {
public static void main(String args[]) {
try {
Class c = Class.forName(args[0]);
Method m[] = c.getDeclaredMethods();
for (int i = 0; i < m.length; i++)
System.out.println(m[i].toString());
} catch (Throwable e) {
System.err.println(e);
}
}
}

  按如下語句執行:

  java DumpMethods java.util.Stack

  它的結果輸出為:

public java.lang.Object java.util.Stack.push(java.lang.Object)

public synchronized java.lang.Object java.util.Stack.pop()

public synchronized java.lang.Object java.util.Stack.peek()

public boolean java.util.Stack.empty()

public synchronized int java.util.Stack.search(java.lang.Object)

  這樣就列出了java.util.Stack 類的各方法名以及它們的限制符和傳回型別。

  這個程式使用 Class.forName 載入指定的類,然後調用 getDeclaredMethods 來擷取這個類中定義了的方法列表。java.lang.reflect.Methods 是用來描述某個類中單個方法的一個類。

  2.開始使用 Reflection

  用於 reflection 的類,如 Method,可以在 java.lang.relfect
包中找到。使用這些類的時候必須要遵循三個步驟:第一步是獲得你想操作的類的 java.lang.Class 對象。在運行中的 Java
程式中,用 java.lang.Class 類來描述類和介面等。

  下面就是獲得一個 Class 對象的方法之一:

  Class c = Class.forName("java.lang.String");

  這條語句得到一個 String 類的類對象。還有另一種方法,如下面的語句:

  Class c = int.class;

  或者

  Class c = Integer.TYPE;

  它們可獲得基本類型的類資訊。其中後一種方法中訪問的是基本類型的封裝類 (如 Integer) 中預先定義好的 TYPE 欄位。

  第二步是調用諸如 getDeclaredMethods 的方法,以取得該類中定義的所有方法的列表。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.