摘要:使用反射可以檢視類屬性成員變量,并且可以在運行時。獲得屬性對象類是通過對象獲得的。示例如下數(shù)組包含類定義所有公共屬性實例。如屬性是靜態(tài)屬性,應(yīng)傳給方法,以替代例子中的參數(shù)。
使用反射可以檢視類屬性(成員變量),并且可以在運行時get/set。這些是通過類java.lang.reflect.Field實現(xiàn)的。本文將詳細介紹javaField對象。別忘了參考Sun的JavaDoc。
獲得屬性對象Field類是通過Class對象獲得的。示例如下:
Class aClass = ...//obtain class object Field[] fields = aClass.getFields();
Field[]數(shù)組包含類定義所有公共(public)屬性實例。
如果你知道想訪問的屬性名稱,可以使用下方代碼:
Class aClass = MyObject.class Field field = aClass.getField("someField");
上訴示例將返回類MyObject定義的someField屬性對應(yīng)的Field實例,類似如下代碼:
public class MyObject{ public String someField = null; }
如果給予getField()方法的參數(shù)不存在對應(yīng)的屬性,將拋出NoSuchFieldException。
屬性名稱如已有Field實例,可以通過Field.getName()方法獲取屬性名稱,代碼如下 :
Field field = ... //obtain field object String fieldName = field.getName();屬性類型
可以使用Field.getType() 方法獲取屬性類型:
Field field = aClass.getField("someField"); Object fieldType = field.getType();獲取、設(shè)置屬性值
一旦獲得Field引用,可以使用Field.get()和Field.set()方法獲取或設(shè)置屬性值,代碼如下:
Class aClass = MyObject.class Field field = aClass.getField("someField"); MyObject objectInstance = new MyObject(); Object value = field.get(objectInstance); field.set(objetInstance, value);
傳給get和set方法的objetInstance必須是擁有指定屬性的一個類的實例。上例使用的是MyObject的實例,因為someField是類MyObject的一個變量。
如屬性是靜態(tài)屬性(public static),應(yīng)傳null給get、set方法,以替代例子中的objectInstance參數(shù)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/77252.html
摘要:知識點總結(jié)反射通過反射操作類的屬性和方法知識點總結(jié)反射使用反射操作類的屬性和方法通過反射調(diào)用構(gòu)造方法,構(gòu)造對象其實調(diào)用無參構(gòu)造器張三調(diào)用有參構(gòu)造器李四通過反射調(diào)用普通方法獲取方法激活方法王武王武通過反射操作屬性是屬性,如果不寫會這個私有屬 Java知識點總結(jié)(反射-通過反射操作類的屬性和方法 ) @(Java知識點總結(jié))[Java, 反射] 使用反射操作類的屬性和方法: import ...
摘要:所以,我實現(xiàn)了一個稱為的類來應(yīng)用反射。現(xiàn)在流行的語言大都支持反射。這組內(nèi)省主要是針對類進行操作的,能夠獲取類的屬性信息。可以看到,通過的內(nèi)省機制,解決了的最關(guān)鍵的問題。在封裝反射的時候,會充分考慮到各種情況。 BeanMap 學習具體的技術(shù)工具的好辦法就是些Demo、造輪子。所以,我實現(xiàn)了一個稱為BeanMap的類來應(yīng)用java反射API。 這個BeanMap的功能是將一個Bean包裝...
摘要:通過反射獲取帶參無返回值成員方法并使用設(shè)置安全檢查,訪問私有構(gòu)造函數(shù)必須創(chuàng)建實例這種不行,注意和方法需要傳遞參數(shù)測試復制這個功能獲取私有方法,同樣注意和的區(qū)別賦予訪問權(quán)限調(diào)用方法。 反射 目錄介紹 1.反射概述 1.1 反射概述 1.2 獲取class文件對象的三種方式 1.3 反射常用的方法介紹 1.4 反射的定義 1.5 反射的組成 1.6 反射的作用有哪些 2.反射的...
近期在維護公司項目的時候遇到一個問題,因為實體類中的 set 方法涉及到了業(yè)務(wù)邏輯,因此在給對象賦值的過程中不能夠使用 set 方法,為了實現(xiàn)功能,所以采用了反射的機制給對象屬性賦值,借此機會也了解了反射的一些具體用法和使用場景,分以下兩點對反射進行分析: 反射的優(yōu)勢和劣勢 反射的應(yīng)用場景 反射的優(yōu)勢和劣勢 ??個人理解,反射機制實際上就是上帝模式,如果說方法的調(diào)用是 Java 正確的打開方式...
摘要:反射機制的應(yīng)用實例在泛型為的中存放一個類型的對象。工廠模式可以參考現(xiàn)在我們利用反射機制實現(xiàn)工廠模式,可以在不修改工廠類的情況下添加任意多個子類。 學習交流群:669823128java 反射 定義 功能 示例概要:Java反射機制詳解| |目錄 1反射機制是什么 2反射機制能做什么 3反射機制的相關(guān)API 通過一個對象獲得完整的包名和類名 實例化Class類對象 獲取一個對象的父類與...
閱讀 1299·2021-11-15 11:37
閱讀 3495·2021-11-11 16:55
閱讀 1741·2021-08-25 09:39
閱讀 3207·2019-08-30 15:44
閱讀 1729·2019-08-29 12:52
閱讀 1397·2019-08-29 11:10
閱讀 3230·2019-08-26 11:32
閱讀 3216·2019-08-26 10:16