本文摘自Java Reflection Tutorial
通過Java的反射(Reflection)機制,即使在編譯時不知道class name和method name等資訊,也可以在運作時擷取class、interface、fields和methods等相關資訊,還可以建立新的執行個體、調用方法以及擷取/設定屬性值。
本文将介紹Java反射機制的基本知識,包括:數組(arrays), 注解(annotations),泛型(generics)和動态代理(dynamic proxy),以及動态類的加載和重載入(dynamic class loading and reloading)。
本文還将介紹一些特别的技巧,包括:擷取一個類的getter方法,通路一個類的私有屬性及方法。
本文在JDK 6 的基礎上介紹Java Reflection。
Example
首先來看一段Java反射的例子
import java.lang.reflect.Method;
public class HelloJava {
public static void main(String[] args) {
Method[] methods = HelloJava.class.getMethods();
for (Method m : methods)
System.out.println(m.getName());
}
}
結果為
main
wait
wait
wait
equals
toString
hashCode
getClass
notify
notifyAll
本文将分為以下幾個部分來分别介紹Java的反射機制
- 非深入探尋Java反射機制 (Class)
- 非深入探尋Java反射機制(Constructors)