什麼是反射機制?

在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱爲java語言的反射機制。簡單來說,就是Java對每一個類和類中的所有成員都進行了封裝,這樣每個類都有一個與之對應的Class對象,通過這個對象可以直接訪問類中的所有成員。

反射創建對象

·通過默認構造函數創建對象:Class> t = Class.forName("cn.test.reflect.A");

t.newInstance();

·通過指定構造函數創建對象:Class> t = Class.forName("cn.test.reflect.A");

Constructor> cons[] = t.getConstructors();

A a = (A) cons[2].newInstance("aa","bb");

注:

① Class>表示任何類型的類;

② newInstance()方法只能調用public的無參構造函數,它和new關鍵字創建實例的區別:

創建對象的方式不一樣,newInstance是使用類加載機制,new是創建一個新類;

動態代理

代理模式爲其它對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個客戶不想或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。

動態代理是指客戶通過代理類來調用其它對象的方法,主要使用了Java反射機制來實現動態代理。使用Java的反射機制創建動態代理對象,讓代理對象在調用目標方法之前和之後分別做一些事情,然後動態代理對象決定是否調用以及何時來調用被代理對象的方法。

“我們相信人人都可以成爲一個IT大神,現在開始,選擇一條陽光大道,助你入門,學習的路上不再迷茫。這裏是北京尚學堂,初學者轉行到IT行業的聚集地。"

查看原文 >>
相關文章