午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

Java反射之Field用法

 Gtwo 2018-09-21

在Java反射中Field用于獲取某個(gè)類的屬性或該屬性的屬性值

一:如何通過(guò)Field反射獲取類的屬性


 Field提供如下幾種方法:

:1:Class.getDeclaredField(String name);

返回一個(gè) Field 對(duì)象,該對(duì)象反映此 Class 對(duì)象所表示的類或接口的指定已聲明字段(包括私有成員)。

2:Class.getDeclaredFields();

 返回 Field 對(duì)象的一個(gè)數(shù)組,該數(shù)組包含此 Class 對(duì)象所表示的類或接口所聲明的所有字段(包括私有成員)。

3:Class.getField(String name);

返回一個(gè) Field 對(duì)象,它反映此 Class 對(duì)象所表示的類或接口的指定公共成員字段。

4:Class.getFields();

返回一個(gè)包含某些 Field 對(duì)象的數(shù)組,該數(shù)組包含此 Class 對(duì)象所表示的類或接口的所有可訪問(wèn)公共字段。


下面一個(gè)例子說(shuō)明如何通過(guò)Field反射獲取類中的屬性

我們先定義一個(gè)普通類Person 

包含三個(gè)屬性 公有name 私有age、sex

 

下面開(kāi)始通過(guò)Field反射的各方法訪問(wèn)屬性

通過(guò)上面程序也可以發(fā)現(xiàn)Class.getField(String name)和Class.getFields()都只能返回公有屬性,如果訪問(wèn)私有屬性就會(huì)報(bào)錯(cuò)java.lang.NoSuchFieldException。

運(yùn)行結(jié)果:

 
 

二:獲取屬性的屬性值并修改屬性值

獲取屬性的值用get(Object obj)的方法,但是獲取私有屬性的時(shí)候必須先設(shè)置Accessible為true,然后才能獲取。

下面咱們獲取Person各屬性的屬性值并將姓名屬性值修改

Test.java(右擊圖片-新頁(yè)簽打開(kāi)-看大圖)

 
從上面程序我們得知,通過(guò)get(Object obj)獲取屬性的值,通過(guò)set(Object obj,value)重新設(shè)置新的屬性值,并且當(dāng)我們需要獲取私有屬性的屬性值得時(shí)候,我們必須設(shè)置Accessible為true,然后才能獲取。

運(yùn)行結(jié)果:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多