反射

反射
類初始化的時機
所謂的類的出過後,就是講咱們程序員寫的java文件編譯後的class文件加載到內存中,並未該該class文件生成一個對應的對象,這個過程就是類的初始化;
每一個class文件在內存中有且僅有一份由java虛擬機負責建立,程序員只能獲取使用,沒法手動建立
一、直接使用類的靜態成員變量或成員方法;
二、建立一個類的對象;(new)
三、建立一個類的子類對象的時候,父類也會加載
四、使用反射的技術直接強制加載某個類。
五、使用java.exe直接運行一個.class文件時,也會加載者類java

反射概述:
Java反射機制是在運行狀態中,對於任意一個類,都可以知道這個類的全部屬性和方法;對於任意一個對象,都可以調用它的任一方法和屬性
這種動態獲取信息程序員

獲取類的文件字節碼對象僅有一份,由java虛擬機負責建立,程序員只能獲取使用,沒法手動建立;
方式1:
格式:Class 變量名 = 數據類型.class;
方式2:
格式:任意Object;類型的對象.getClass();
方式3:
格式:Class.forName("類的全路徑名");
反射構造方法:
反射使用步驟:
一、獲取字節碼文件對象,
二、面向字節碼文件對象獲取想要的內容(構造,成員方法和屬性等)
三、面向獲取的內容,直接讓獲取的內容執行便可。
Class類的關於反射構造方法的方法:
Constructor
當一個類總擁有public權限的空參數的構造方法時,能夠直接使用字節碼文件對象直接建立對象newInstance
反射私有構造方法--暴力反射(瞭解)
全部的暴力反射與普通反射之間的方法名中,多了一個Declared單詞,反射以後,執行以前,須要忽略權限檢查;
setAccessible(boolean),只能傳true,忽略權限檢查
反射成員方法:
java將反射出來的方法對象,使用Method類來表示
反射成員變量:
因爲實際開發,成員變量通常私有,一般經過get和set方法來操做,若是想直接操做屬性須要使用暴力反射;數組

BeanUtils工具類的使用BeanUtils是Apache編寫的一套用於數據封裝的java工具類;
能將不一樣數據類型的值封裝到指定的java對象中;
能夠自動將String類型的數據類型轉換成基本數據類型,string數組類型;工具

相關文章
相關標籤/搜索