日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA反射系列之Field,java.lang.reflect.Field使用获取方法。

發布時間:2025/3/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA反射系列之Field,java.lang.reflect.Field使用获取方法。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

首先必須明一點 Field類主要是用來輔助獲取和操作類的屬性的

1.怎么通過反射獲取類的屬性

???? 先來看JDK提供的方法有如下幾種:

???????? a)Class.getDeclaredField(String name);

?? ? 返回一個 Field 對象,該對象反映此 Class 對象所表示的類或接口的指定已聲明字段

???? b)Class.getDeclaredFields();

????? 返回 Field 對象的一個數組,這些對象反映此 Class 對象所表示的類或接口所聲明的所有字段

??? c)Class.getField(String name);

?????? 返回一個 Field 對象,它反映此 Class 對象所表示的類或接口的指定公共成員字段

??? d)Class.getField();

????????????? 返回一個包含某些 Field 對象的數組,這些對象反映此 Class 對象所表示的類或接口的所有可訪問公共字段

??? 來一個例子來說明一下 :

?? 實體類:

?import?java.util.Date; /***?@ClassName:?Student*?@Description:?學生實體*?@author?JoseanLuo??*?@date?2014-3-18?下午5:17:35*?@version?V1.0?*/ public?class?Student {private?Long?id;private?String?name;private?Date?createdate;private?String?no;public?String?nickname; public?Long?getId() {return?id; } public?void?setId(Long?id) {this.id?=?id; } public?String?getName() {return?name; } public?void?setName(String?name) {this.name?=?name; } public?Date?getCreatedate() {return?createdate; } public?void?setCreatedate(Date?createdate) {this.createdate?=?createdate; } public?String?getNo() {return?no; } public?void?setNo(String?no) {this.no?=?no; } public?String?getNickname() {return?nickname; } public?void?setNickname(String?nickname) {this.nickname?=?nickname; }}

???? 測試類:

import?java.lang.reflect.Field; import?java.util.Date; /***?@ClassName:?ReflectFieldTest*?@Description:?反射Field測試。*?@author?JoseanLuo??*?@date?2014-3-18?下午5:16:17*?@version?V1.0?*/ public?class?ReflectFieldTest {public?static?void?main(String[]?args) {????Student?stu=new?Student();stu.setId(1L);stu.setName("Josean");stu.setNo("201403185203344");stu.setCreatedate(new?Date());try{Field?property1=stu.getClass().getDeclaredField("name");System.out.println(property1);//private?java.lang.String?com.cx.test.Student.nameField?property3=stu.getClass().getField("nickname");System.out.println(property3);//public?java.lang.String?com.cx.test.Student.nickname//錯誤方法?getField系列方法只能獲取公共字段//Field?property2=stu.getClass().getField("name");//System.out.println(property2);//會拋java.lang.NoSuchFieldException}?catch?(SecurityException?e){e.printStackTrace();}?catch?(NoSuchFieldException?e){e.printStackTrace();} }}

?

2.進行屬性獲取更改

?? 得到這個Field之后你就可以獲取他的值或者設置他的值了。

?? 獲取他的值用get類型方法,他針對常見類型提供了對應get方法,這里就不一一列舉了。

?? 值得注意的是獲取私有屬性的時候必須先設置Accessible為true,然后才能獲取。

?? 同理設置的時候調用set類型方法,這里也不一一列舉了,下面放代碼。


import?java.lang.reflect.Field; import?java.util.Date; /***?@ClassName:?ReflectFieldTest*?@Description:?反射Field測試。*?@author?JoseanLuo??*?@date?2014-3-18?下午5:16:17*?@version?V1.0?*/ public?class?ReflectFieldTest {public?static?void?main(String[]?args)?throws?Exception {????Student?stu=new?Student();stu.setId(1L);stu.setName("Josean");stu.setNo("201403185203344");stu.setCreatedate(new?Date());stu.setNickname("copyman");Field?property1=stu.getClass().getDeclaredField("name");//System.out.println(property1);//out:private?java.lang.String?com.cx.test.Student.nameField?property3=stu.getClass().getField("nickname");System.out.println(property3.get(stu));//System.out.println(property3);//out:public?java.lang.String?com.cx.test.Student.nickname//錯誤方法?getField系列方法只能獲取公共字段//Field?property2=stu.getClass().getField("name");//System.out.println(property2);//會拋java.lang.NoSuchFieldExceptionField?[]?prFields4=stu.getClass().getDeclaredFields();for(Field?field:prFields4){System.out.println(field);System.out.println(field.equals(property1));//私有變量必須先設置Accessible為truefield.setAccessible(true);//獲取用get類方法。System.out.println(field.get(stu));}//設置用set類方法property3.set(stu,?"名字被我改了,哈哈");System.out.println(stu.getNickname());}}

這個是控制臺輸出:

copyman private?java.lang.Long?com.cx.test.Student.id false 1 private?java.lang.String?com.cx.test.Student.name true Josean private?java.util.Date?com.cx.test.Student.createdate false Tue?Mar?18?18:19:39?CST?2014 private?java.lang.String?com.cx.test.Student.no false 201403185203344 public?java.lang.String?com.cx.test.Student.nickname false copyman 名字被我改了,哈哈

是不是覺得很很簡單呢 。

轉載于:https://my.oschina.net/u/1407116/blog/209383

總結

以上是生活随笔為你收集整理的JAVA反射系列之Field,java.lang.reflect.Field使用获取方法。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91素人约啪| 日韩在线观看视频一区二区三区 | 最新av不卡 | 伊人一区 | 日韩欧美国产高清 | 亚洲精品高清无码视频 | 免费日本黄色网址 | 偷拍青青草 | 国产精品无码av在线有声小说 | 国产一级片一区二区 | 国产丝袜一区二区三区 | 欧美日韩国产黄色 | 外国av在线| 亚洲av毛片一区二二区三三区 | 国产精品一卡二卡 | 日韩视频第一页 | 人人妻人人玩人人澡人人爽 | 免费播放毛片 | 午夜激情网站 | 天天综合日日夜夜 | 99riav视频 | 中文在线免费视频 | 亚洲男人天堂2020 | 免费的毛片网站 | 瑟瑟视频在线 | 国产的av | 影音先锋91| 黄视频免费在线观看 | a国产| 国产精品999| 色呦呦在线免费观看 | 日本午夜影院 | 日本伦理一区 | 亚洲国产视频网站 | 久章草影院| 国产性爱精品视频 | 九色网址 | 中文字幕 日韩 欧美 | 中文字幕高清在线播放 | 91麻豆产精品久久久久久夏晴子 | 色婷婷av一区二区三区之e本道 | 亚洲成人中文 | 免费日批视频 | 不卡一区二区在线观看 | 国产三级av在线播放 | 午夜精品在线播放 | 波多野结衣av在线播放 | 91视频免费观看 | 欧美成人视 | 琪琪免费视频 | 91成人免费在线观看 | v天堂在线 | av网站国产 | 日韩精品人妻中文字幕 | 日本www| 男女男精品网站 | 另类专区亚洲 | 少妇一级淫片免费放播放 | 欧美黄色免费网站 | 麻豆tv在线观看 | 日韩经典午夜福利发布 | 秋霞成人午夜伦在线观看 | 麻豆疯狂做受xxxx高潮视频 | 日本成人免费在线 | 欧美成人三级在线视频 | 少妇呻吟视频 | 青娱网电信一区电信二区电信三区 | www.日本在线 | 免费在线观看黄色片 | 国产九九九精品 | 午夜av福利| 免费黄色网址在线观看 | 精品午夜一区二区三区 | 依人成人| 国产精品一区二区av白丝下载 | 国产亚洲精品熟女国产成人 | 久久久久成人片免费观看蜜芽 | 人妻洗澡被强公日日澡 | 影音先锋成人资源站 | 天天干天天综合 | 亚洲高清网站 | 久久精品国产精品 | 国产做受69 | 日本高清有码 | 美女爱爱爱 | 久久午夜精品 | 一本一道精品欧美中文字幕 | 1000部国产精品成人观看 | 手机看片中文字幕 | av性在线 | 国产aⅴ一区二区三区 | 产乳奶汁h文1v1 | 精品国产乱码久久久久久浪潮 | 一级特黄肉体裸片 | 黄色网在线播放 | www.青青草.com| 曰本丰满熟妇xxxx性 | a级片中文字幕 | 国产高清免费在线 |