Java的反射機制同意你在程序執行的過程中獲取類定義的細節。有時候在程序執行的時候才得知要調用哪個方法,這時候反射機制就派上用場了。
獲取類
類的獲取方法有下面幾種:- ? ?forName()。通過Class.forName()獲取與字符串向相應的類。
比方\lstinline{Class.forName("java.lang.String");}。
- ? ?getClass()。每一個對象都有這種方法。比方\lstinline{Foo foo; ...; foo.getClass();}。
- ? ?類名.class。直接通過類名獲取這個類的反射對象。比方String.class。
- ? ?基本類型的類。
比方Integer.TYPE。
這樣的方法與Integer.class是由差別的。一個是基本類型(Primitive type)。一個是復合類型(Composition)。
獲取構造函數
獲取構造函數由下面幾種方法:- ? ?getConstructor(Class[] params)。獲取公共的構造函數。
- ? ?getConstructors()
- ? ?getDeclaredConstructor(Class[] params)。獲取全部構造函數。
- ? ?getDeclaredConstructors()
獲取構造函數之后能夠通過newInstance生成一個新的實例。
獲取字段
獲取字段的方法有下面幾種:- ? ?getField(String name)。獲取公共的字段。
- ? ?getFields()。
- ? ?getDeclaredField(String name)。獲取全部的字段。
- ? ?getDeclaredFields()
獲取字段之后能夠通過getDouble getInt等方法獲取變量的值。也能夠通過setDouble setInt等方法給變量賦值。
獲取成員方法
獲取方法的方法有下面幾種:- ? ?getMethod(String name, Class[] params)。獲取公共的方法。
- ? ?getMethods()
- ? ?getDeclaredMethod(String name, Class[] params)。
獲取全部的方法。
- ? ?getDeclaredMethods()
獲取成員方法之后能夠調用invoke方法運行該方法。