1. 程式人生 > >一個簡單的例子

一個簡單的例子

syn lan sea eth str 返回 row reflect 限制

考慮下面這個簡單的例子,讓我們看看 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 是用來描述某個類中單個方法的一個類。

一個簡單的例子