反射機制是在運作狀态中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動态擷取的資訊以及動态調用對象的方法的功能稱為java語言的反射機制。
反射機制主要提供了以下功能:
在運作時判斷任意一個對象所屬的類;
在運作時構造任意一個類的對象;
在運作時判斷任意一個類所具有的成員變量和方法;
在運作時調用任意一個對象的方法;
生成動态代理。
InterFace 接口
Person 實體類
運作結果:
getDeclaredFields()獲得某個類的所有申明的字段,即包括public、private和proteced,但是不包括父類的申明字段。
getFields()獲得某個類的所有的公共(public)的字段,包括父類。
運作結果:
運作結果:報錯了,原因是:id 這個屬性的是 private 私有的,不能修改它的值。
改進:添加 idField.setAccessible( true );
完整代碼:
定義 Util 類
完整小例子:
當參數是 int 類型時
擷取方法的時候需要用:int.class。不能使用 Integer.class. 會報錯。
Person 類
建立執行個體實戰
Class類提供了四個public方法,用于擷取某個類的構造方法。
四種擷取成員方法的方法
四種擷取成員屬性的方法
Field[] getDelcaredField() 傳回所有成員變量組成的數組(不分public和非public屬性
本文轉自 sshpp 51CTO部落格,原文連結:http://blog.51cto.com/12902932/1947444,如需轉載請自行聯系原作者