更新時(shí)間:2020-02-21 12:41:53 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2569次
Java反射指的是對(duì)于任何的一個(gè)java類,我們都可以通過(guò)反射獲取到這個(gè)類的所有屬性和方法(包含私有的屬性方法),使用java反射我們也可以調(diào)用一個(gè)對(duì)象的任何方法。

我們知道Java是一門(mén)面向?qū)ο缶幊痰恼Z(yǔ)言,我們編程的時(shí)候,經(jīng)常會(huì)將類的屬性進(jìn)行封裝,然后提供public方法進(jìn)行屬性的設(shè)置和獲取。類的屬性我們通常會(huì)設(shè)置成private的私有屬性,為的就是保護(hù)對(duì)象屬性不被隨意地修改和訪問(wèn)。但是反射機(jī)制卻恰恰相反,通過(guò)反射,我們可以獲取到這些被保護(hù)的屬性和方法,并且可以修改和訪問(wèn)他們。
在java中我們可以使用object對(duì)象的getClass();方法獲得Class的對(duì)象classObject;語(yǔ)法格式為ClassclassObject=object.getClass();可以根據(jù)Class對(duì)象的方法獲取object對(duì)象的相關(guān)屬性和方法;
獲取object對(duì)象的名字可以使用classObject.getName();獲取類的名稱,獲取到的結(jié)果包含包的名稱;
獲取object對(duì)象的包名稱,可以使用classObject.getPackage();獲取包的名稱;
獲取object對(duì)象的所有public屬性,可以使用classObject.getFields();方法,返回列表是屬性類Field[]對(duì)象列表;
獲取object對(duì)象所有屬性,可以使用classObject.getDeclaredFields();方法,返回的是所有屬性列表(包含private屬性);
獲取object對(duì)象某個(gè)特定的屬性,可以使用classObject.getField(fieldName);可以根據(jù)屬性名稱獲取屬性類的對(duì)象;
獲取object對(duì)象private屬性,可以使用classObject.getDeclaredField(fieldName);根據(jù)屬性名獲取屬性對(duì)象信息;
獲取object對(duì)象public方法,使用classObject.getMethods();可以獲取到方法類Method[]對(duì)象列表;
獲取object對(duì)象某個(gè)特定的public方法,使用classObject.getMethod(funName,Class……parameterTypes);根據(jù)方法名和方法參數(shù)類型列表,可以獲取到方法類的對(duì)象;
獲取object對(duì)象所有方法(包含private方法);使用classObject.getDeclaredMethods();可以獲取所有的方法對(duì)象列表;
獲取object對(duì)象某個(gè)特定方法(包含private方法),使用classObject.getDeclaredMethod(funName,Class……parameterTypes);根據(jù)方法名和方法參數(shù)類型列表,可以獲取到類的特定方法(包含private方法);
獲取object對(duì)象類中所有的public構(gòu)造方法,可以使用classObject.getConstructors();獲取到構(gòu)造類Constructor的對(duì)象列表;
獲取object對(duì)象類中某個(gè)特定的構(gòu)造方法,可以使用classObject.getConstructor(Class……parameterTypes);根據(jù)參數(shù)類型列表,獲取指定的構(gòu)造函數(shù)對(duì)象;
獲取object對(duì)象類中所有的構(gòu)造方法(包含private),可以使用classObject.getDeclaredConstructors();獲取到構(gòu)造類Constructor的對(duì)象列表;
獲取object對(duì)象類中某個(gè)特定的構(gòu)造方法(包含private),可以使用classObject.getDeclaredConstructor(Class……parameterTypes);根據(jù)參數(shù)類型列表,獲取指定的構(gòu)造函數(shù)對(duì)象;

以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java語(yǔ)言培訓(xùn):Java編程語(yǔ)言反射”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)內(nèi)容
自學(xué)Java,一天學(xué)幾個(gè)小時(shí)發(fā)現(xiàn)自己很強(qiáng)大
新手從0開(kāi)始學(xué)習(xí)java要多久?怎么學(xué)習(xí)比較快?
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)