考慮下面這個簡單的例子,讓我們看看 reflection 是如何工作的。
DumpMethods.java
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 是用來描述某個類中單個方法的一個類。
出處:
http://www.javaworld.com.tw/confluence/display/J2SE/Reflection