版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第Java反射如何獲取字段屬性值目錄Java反射獲取字段屬性值案例反射對象獲取屬性和值憑借成string描述直接上代碼
Java反射獲取字段屬性值
反射獲取Java類的所有字段,包括所有父類中的字段。類自身的字段可直接通過方法
getDeclaredFields()【獲取所有修飾符字段】或者getFields()【獲取public修飾的字段】獲取,但父類中的字段暫時沒有發(fā)現(xiàn)直接獲取的方式。
需要遞歸獲取所有的父類,然后獲取他們的字段,最終獲取到類的所有字段。
如果要獲取字段值,則需要設(shè)置字段可訪問即:field.setAccessible(true);field為reflect包下的Field類
案例
1.父類
packagecom.carl.study.springboot.bean;
importlombok.Data;
importlombok.experimental.Accessors;
*@authorchangez
*@desc
*@date2025/3/1011:30
@Data
@Accessors(chain=true)
publicclassBeanBasic{
privateIntegerid;
privateLongcreateTime;
privateLongupdateTime;
}
2.子類
packagecom.carl.study.springboot.bean;
importlombok.Data;
importlombok.EqualsAndHashCode;
importlombok.ToString;
importlombok.experimental.Accessors;
*@authorchangez
*@desc
*@date2025/3/1011:17
@Data
@EqualsAndHashCode(callSuper=true)
@ToString(callSuper=true)
@Accessors(chain=true)
publicclassStudentextendsBeanBasic{
privateStringname;
privateStringaddress;
}
3.測試類,獲取student類的所有字段
packagetest.lombok;
importcom.carl.study.springboot.bean.Student;
importorg.junit.Test;
importjava.lang.reflect.Field;
importjava.util.ArrayList;
importjava.util.Arrays;
importjava.util.List;
*@authorchangez
*@descJava反射獲取類的所有屬性.
*@date2025/3/1011:41
publicclassLombokTest{
@Test
publicvoidgetParentField(){
Studentstu1=newStudent();
stu1.setName("student-name")
.setAddress("student1-address")
.setId(1)
.setCreateTime(20250310140423L)
.setUpdateTime(20250310140423L)
;
Classclazz=Student.class;
ListFieldallFields=newArrayList(100);
//獲取當(dāng)前對象的所有屬性字段
//clazz.getFields():獲取public修飾的字段
//clazz.getDeclaredFields():獲取所有的字段包括private修飾的字段
allFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
//獲取所有父類的字段,父類中的字段需要逐級獲取
ClassclazzSuper=clazz.getSuperclass();
//如果父類不是object,表明其繼承的有其他類。逐級獲取所有父類的字段
while(clazzSuper!=Object.class){
allFields.addAll(Arrays.asList(clazzSuper.getDeclaredFields()));
clazzSuper=clazzSuper.getSuperclass();
}
allFields.stream().forEach(field-{
//設(shè)置字段可訪問,否則無法訪問private修飾的變量值
field.setAccessible(true);
try{
//獲取字段名稱
StringfieldName=field.getName();
//獲取指定對象的當(dāng)前字段的值
ObjectfieldVal=field.get(stu1);
System.out.println(fieldName+"="+fieldVal);
}catch(IllegalAccessExceptione){
e.printStackTrace();
}
});
}
}
4.結(jié)果輸出
反射對象獲取屬性和值憑借成string
描述
有些時候會用到把穿過來的對象用kv的形式拼接這個時候用反射就很不錯
直接上代碼
publicclassFanSeVo{
privateStringname;
privateStringid;
//.......
//如果是跟外部程序或者接口對接的話,下面還可以加2個屬性,一個是相互約定的秘鑰,一個//是排除秘鑰之后對屬性和值做憑借之后的MD5加密之后的值,可以做數(shù)據(jù)安全考慮,防止傳輸過程數(shù)據(jù)被篡改
}
packagecom.ycj.my_all_demo.fanse;
importjava.lang.reflect.Field;
importjava.util.HashMap;
*@authorycj
*@data17:55
publicclassFanSe{
publicstaticvoidmain(String[]args){
FanSeVofanSeVo=newFanSeVo("1","2");
Field[]fields=fanSeVo.getClass().getDeclaredFields();
HashMapString,Stringmap=newHashMap();
for(Fieldfield:fields){
field.setAccessible(true);
try{
//把對象的屬性做k,值做v
//當(dāng)然中間還可做其他的業(yè)務(wù)操作,比如跳過某些屬性什么的
Stringname=field.getName();
Strings=field.get(fanSeVo).toString();
map.put(name,s);
System.out.println();
}catch(Exceptione){
e.printStackTrace();
}
}
//吧map數(shù)據(jù)轉(zhuǎn)成str,kv的形式
StringstrByMap=getStrByMap(map);
System.out.println(strByMap);//name1id2
}
publicstaticStringgetStrByMap(HashMapString,Strin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自來水公司應(yīng)急培訓(xùn)制度
- 武館培訓(xùn)班日常管理制度
- 財政赤字與宏觀經(jīng)濟穩(wěn)定
- 大模型在信貸風(fēng)險評估中的應(yīng)用-第21篇
- 2026國家統(tǒng)計局儀征調(diào)查隊招聘輔助調(diào)查員1人備考題庫(江蘇)及完整答案詳解1套
- 空氣污染考試題及答案
- 2026天津市河西區(qū)明德致遠高級中學(xué)骨干教師及青年教師招聘備考題庫及參考答案詳解一套
- 2025福建廈門航空有限公司招聘備考題庫完整答案詳解
- 2026新疆博爾塔拉州博樂市泰康人壽保險招聘備考題庫及答案詳解1套
- 健身氣功課考試題及答案
- YY/T 1778.1-2021醫(yī)療應(yīng)用中呼吸氣體通路生物相容性評價第1部分:風(fēng)險管理過程中的評價與試驗
- GB/T 17213.4-2015工業(yè)過程控制閥第4部分:檢驗和例行試驗
- FZ/T 73009-2021山羊絨針織品
- JJF 1069-2012 法定計量檢定機構(gòu)考核規(guī)范(培訓(xùn)講稿)
- GB∕T 5900.2-2022 機床 主軸端部與卡盤連接尺寸 第2部分:凸輪鎖緊型
- 2011-2015廣汽豐田凱美瑞維修手冊wdl
- DFMEA編制作業(yè)指導(dǎo)書新版
- DB35∕T 1844-2019 高速公路邊坡工程監(jiān)測技術(shù)規(guī)程
- 城市管理綜合執(zhí)法局城管執(zhí)法與執(zhí)法程序PPT模板
- 閥門基礎(chǔ)知識上
- 第二章注射成型工藝與模具結(jié)構(gòu)
評論
0/150
提交評論