涓. 鍙嶅皠鏈哄埗鎻忚堪
Java鐨勫弽灝勬満鍒跺厑璁哥▼搴忓湪榪愯鏃墮忚繃鍙嶅皠API鍙栧緱浠諱綍涓涓凡鐭ュ悕縐扮殑class鐨勫唴閮ㄤ俊鎭紝涓昏鍖呮嫭灞炴у悕錛屽睘鎬у悕鐨勪慨楗扮錛屾柟娉曞悕錛屾柟娉曡繑鍥炲鹼紝鏂規硶淇グ絎︾瓑淇℃伅銆?br />
浜? Java綾誨弽灝勪腑鐨勪富瑕佹柟娉?br />
Constructor getConstructor(Class[] params) -- 鑾峰緱浣跨敤鐗規畩鐨勫弬鏁扮被鍨嬬殑鍏叡鏋勯犲嚱鏁幫紝
Constructor[] getConstructors() -- 鑾峰緱綾葷殑鎵鏈夊叕鍏辨瀯閫犲嚱鏁?/p>
Constructor getDeclaredConstructor(Class[] params) -- 鑾峰緱浣跨敤鐗瑰畾鍙傛暟綾誨瀷鐨勬瀯閫犲嚱鏁?涓庢帴鍏ョ駭鍒棤鍏?
Constructor[] getDeclaredConstructors() -- 鑾峰緱綾葷殑鎵鏈夋瀯閫犲嚱鏁?涓庢帴鍏ョ駭鍒棤鍏?
鑾峰緱瀛楁淇℃伅鐨凜lass 鍙嶅皠璋冪敤涓嶅悓浜庨偅浜涚敤浜庢帴鍏ユ瀯閫犲嚱鏁扮殑璋冪敤錛屽湪鍙傛暟綾誨瀷鏁扮粍涓嬌鐢ㄤ簡瀛楁鍚嶏細
Field getField(String name) -- 鑾峰緱鍛藉悕鐨勫叕鍏卞瓧孌?/p>
Field[] getFields() -- 鑾峰緱綾葷殑鎵鏈夊叕鍏卞瓧孌?/p>
Field getDeclaredField(String name) -- 鑾峰緱綾誨0鏄庣殑鍛藉悕鐨勫瓧孌?/p>
Field[] getDeclaredFields() -- 鑾峰緱綾誨0鏄庣殑鎵鏈夊瓧孌?nbsp;
鐢ㄤ簬鑾峰緱鏂規硶淇℃伅鍑芥暟錛?/p>
Method getMethod(String name, Class[] params) -- 浣跨敤鐗瑰畾鐨勫弬鏁扮被鍨嬶紝鑾峰緱鍛藉悕鐨勫叕鍏辨柟娉?/p>
Method[] getMethods() -- 鑾峰緱綾葷殑鎵鏈夊叕鍏辨柟娉?/p>
Method getDeclaredMethod(String name, Class[] params) -- 浣跨敤鐗瑰啓鐨勫弬鏁扮被鍨嬶紝鑾峰緱綾誨0鏄庣殑鍛藉悕鐨勬柟娉?/p>
Method[] getDeclaredMethods() -- 鑾峰緱綾誨0鏄庣殑鎵鏈夋柟娉?nbsp;
涓? Java鍙嶅皠鏈哄埗搴旂敤鍒濇帰
鐜板湪涓鍫嗘鏋舵悶寰椾漢浜戦噷闆鵑噷鐨勶紝渚嬪spring絳夌瓑錛屽ぇ閮藉埄鐢ㄤ簡Java鐨勫弽灝勬満鍒訛紝eg. 澶у悕榧庨紟鐨処OC.鏄ㄥぉ鏅氫笂闂茬潃娌′簨鐨勬椂鍊欙紝鍒濊瘯浜嗕笅鍙嶅皠錛屼笅闈㈡槸涓涓畝鍗曠殑嫻嬭瘯渚嬪瓙:
import java.awt.Button;
import java.lang.reflect.Method;
import java.util.Hashtable;


/** *//**
* 嫻嬭瘯Java鐨勫弽灝勬満鍒?br />
* @author Amigo Xie(xiexingxing1121@126.com)
* @since 2007/04/20 21:40
*/

public class ReflectionTest
{


/** *//**
* @param args
*/

public static void main(String[] args) throws Exception
{
ReflectionTest reflection = new ReflectionTest();
reflection.getNameTest();
System.out.println("");
reflection.getMethodTest();
}

/** *//**
* Class鐨刧etName()鏂規硶嫻嬭瘯
* @throws Exception
*/

public void getNameTest() throws Exception
{
System.out.println("===========begin getNameTest============");
String name = "amigo";
Class cls = name.getClass();
System.out.println("string class name: " + cls.getName());
Button btn = new Button();
Class btnClass = btn.getClass();
System.out.println("button class name: " + btnClass.getName());
Class superBtnClass = btnClass.getSuperclass();
System.out.println("super button class name: " + superBtnClass.getName());
Class clsTest = Class.forName("java.awt.Button");
System.out.println("clsTest name: " + clsTest.getName());
System.out.println("===========end getNameTest============");
}

/** *//**
* Class鐨刧etMethod(
)鏂規硶嫻嬭瘯
* @throws Exception
*/

public void getMethodTest() throws Exception
{
System.out.println("===========begin getMethodTest==========");
Class cls = Class.forName("ReflectionTest");
Class ptypes[] = new Class[2];
ptypes[0] = Class.forName("java.lang.String");
ptypes[1] = Class.forName("java.util.Hashtable");
Method method = cls.getMethod("testMethod", ptypes);
Object args[] = new Object[2];
args[0] = "hello, my dear!";
Hashtable ht = new Hashtable();
ht.put("name", "amigo");
args[1] = ht;
String returnStr = (String) method.invoke(new ReflectionTest(), args);
System.out.println("returnStr= " + returnStr);
System.out.println("===========end getMethodTest==========");
}


public String testMethod(String str, Hashtable ht) throws Exception
{
String returnStr = "return str";
System.out.println("begin testMethod invoked
");
System.out.println("str= " + str);
System.out.println("name= " + (String) ht.get("name"));
System.out.println("end testMethod invoked
");
return returnStr;
}
}

鎺у埗鍙拌緭鍑哄涓嬶細
===========begin getNameTest============
string class name: java.lang.String
button class name: java.awt.Button
super button class name: java.awt.Component
clsTest name: java.awt.Button
===========end getNameTest============
===========begin getMethodTest==========
begin testMethod invoked......
str= hello, my dear!
name= amigo
end testMethod invoked......
returnStr= return str
===========end getMethodTest==========

]]>