反射概念
反射:将類的各個組成部分封裝為其他對象,這就是反射機制
好處:可以在程式運作時操作那些類,比如擷取類資訊、接口、方法和屬性
使用反射
一、擷取Class類對象
一、引用類型
1.Class.forName(類的全路徑名)
2.對象.getClass()
3.類名.Class
二、基本資料類型
類型名稱.Class;
二、操作類對象
一、擷取類資訊
1.getName():擷取類的全路徑名
2.getSimpleName():擷取類的名稱
3.getSuperClass():擷取父類的class對象
4.getInterfaces():擷取實作的所有接口
二、操作構造方法
調用構造方法來擷取對象
getName():擷取目前構造方法的名稱
getParameterTypes():擷取目前構造方法所有參數的類型
newInstance(Object... par):調用目前構造方法,建立一個java對象
三、操作屬性
1.擷取屬性
Field[] getFields():擷取所有的公共的屬性包括繼承的
Field[] getDeclaredFields():擷取目前類的所有屬性包括私有的
Field getField(String name):擷取指定名稱的屬性 包括繼承的
Field getDeclaredField(String name):擷取指定名稱的屬性 包括私有的
2.操作屬性
取值:Object get(Object obj)
指派:void set(Object obj, Object value)
四、操作方法
1.擷取方法
Method[] getMethods() 擷取所有方法 包括繼承的
Method[] getDeclaredMethods() 擷取所有方法 包括私有
Method getMethod(String name,Class... para) 擷取指定方法 包括繼承的
Method getDeclaredMethod(String name,Class... para) 擷取指定方法 包括私有的
2.操作方法
Object invoke(Object obj, Object... values)