(1)在運行時判斷任意一個對象所屬的類;
(2)在運行時構造任意一個類的對象;
(3)在運行時判斷任意一個類所具有的成員變量和方法;
(4)在運行時調用任意一個對象的方法;
(5)生成動態代理。
在Java中,每一個Object都有一個getClass()方法,通過getClass方法我們可以獲取到這個對象對應的反射類:
String s = "hello";
Class<?> c = s.getClass();
(2)通過forName方法
調用Class類的靜態方法forName():
Class<?> c = Class.forName("java.lang.String");
(3)使用.class
直接使用.class:
Class<?> c = String.class;
(1)Constructor getConstructor(Class[] params)//根據指定參數獲得public構造器
(2)Constructor[] getConstructors()//獲得public的所有構造器
(3)Constructor getDeclaredConstructor(Class[] params)//根據指定參數獲得public和非public的構造器
(4)Constructor[] getDeclaredConstructors()//獲得public的所有構造器
5、獲得類方法的方法
(1)Method getMethod(String name, Class[] params),根據方法名,參數類型獲得方法
(2)Method[] getMethods()//獲得所有的public方法
(3)Method getDeclaredMethod(String name, Class[] params)//根據方法名和參數類型,獲得public和非public的方法
(4)Method[] getDeclaredMethods()//獲得所以的public和非public方法
6、獲得類中屬性的方法
(1)Field getField(String name)//根據變量名得到相應的public變量
(2)Field[] getFields()//獲得類中所以public的方法
(3)Field getDeclaredField(String name)//根據方法名獲得public和非public變量
(4)Field[] getDeclaredFields()//獲得類中所有的public和非public方法