天天看點

非深入探尋Java反射機制Example

本文摘自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)