反射
基本概念
通常情況下撰寫的代碼都是固定的,運行的結果也是固定的,若撰寫代碼時不確定會創建什么型別的物件以及呼叫什么樣的方法,由運行時傳入的引數決定,這種技術就叫動態編程或反射機制。
反射機制是目前主流框架的底層原理。
Class類
基本概念
java.lang.Class類的實體用于表示正在運行Java程式中的類和介面,也就是用于代表一種資料型別。
該類沒有公共構造方法,該類的實體由Java虛擬機和類加載器自動構造。
獲取Class物件的方式
使用資料型別.class的方式獲取對應型別的Class物件;
使用物件.getClass()的方式獲取對應型別的Class物件;
使用包裝類.TYPE的方式獲取對應基本資料型別的Class物件;
使用Class.forName()的方式獲取對應型別的Class物件;
常用的方法
static Class<?> forName(String className)
用于獲取引數字串指定型別的Class物件并回傳。
T newInstance()
用于創建此Class物件所表示類的新實體/物件。
若此Class物件代表String類,則呼叫該方法表示創建String型別的物件。
若此Class物件代表Person類,則呼叫該方法表示創建Person型別的物件。
Constructor<T> getConstructor(Class<?>... parameterTypes)
用于獲取此Class物件所表示類中引數指定的公共構造方法。
Constructor<?>[] getConstructors()
用于獲取此Class物件所表示類中所有的公共構造方法。
Field getDeclaredField(String name)
用于獲取此Class物件所表示類中引數指定的成員變數。
Field[] getDeclaredFields()
- 用于獲取此Class物件所表示類中所有成員變數。
Method getMethod(String name, Class<?>... parameterTypes)
用于獲取此Class物件所表示類中指定的公共成員方法。
Method[] getMethods()
用于獲取此Class物件所表示類中所有的公共成員方法。
Constructor類
基本概念
java.lang.reflect.Constructor類用于描述獲取到的單個構造方法的相關資訊。
常用的方法
T newInstance(Object... initargs)
使用此Constructor物件代表的構造方法來構造物件,引數用于初始化物件的成員變數
Field類
基本概念
java.lang.reflect.Field類用于描述獲取到的單個成員變數資訊。
常用的方法
Object get(Object obj)
用于獲取引數物件obj中此Field物件所描述成員變數的數值并回傳。
void set(Object obj, Object value)
用于設定引數物件obj中此Field物件所描述成員變數的數值為value。
void setAccessible(boolean flag)
用于設定是否取消Java語言的訪問檢查。
Method類
基本概念
java.lang.reflect.Method類用于描述獲取到的單個成員方法資訊。
常用的方法
Object invoke(Object obj, Object... args)
使用引數物件obj來呼叫此Method物件所描述的成員方法,實參傳遞args。
JavaBean
JavaBean本質上就是一種習慣性的編程規范并不是語法規則,通常要求如下:
要求滿足JavaBean規范的類應該放在一個包中;
要求滿足JavaBean規范的類應該提供無參構造方法;
要求滿足JavaBean規范的類應該私有化成員變數;
要求滿足JavaBean規范的類應該提供公有的get和set方法;
要求滿足JavaBean規范的類應該支持序列化功能(新增加);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/157214.html
標籤:非技術區
上一篇:IEDA編譯后不能運
