最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java反射機(jī)制根據(jù)屬性名獲取屬性值的操作

 更新時(shí)間:2020年10月01日 11:17:14   作者:Z丶royAl  
這篇文章主要介紹了java反射機(jī)制根據(jù)屬性名獲取屬性值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

一、考慮安全訪問范圍內(nèi)的屬性,沒有權(quán)限訪問到的屬性不讀取

 /**
  * 根據(jù)屬性名獲取屬性值
  * 
  * @param fieldName
  * @param object
  * @return
  */
 private String getFieldValueByFieldName(String fieldName, Object object) {
  try {
   Field field = object.getClass().getField(fieldName);
   //設(shè)置對(duì)象的訪問權(quán)限,保證對(duì)private的屬性的訪問
   return (String)field.get(object);
  } catch (Exception e) {
   return null;
  } 
 }

二、不考慮從祖先類繼承的屬性,只獲取當(dāng)前類屬性,包括四類訪問權(quán)限,private,protect,default,public

 /**
  * 根據(jù)屬性名獲取屬性值
  * 
  * @param fieldName
  * @param object
  * @return
  */
 private String getFieldValueByFieldName(String fieldName, Object object) {
  try {
   Field field = object.getClass().getDeclaredField(fieldName);
   //設(shè)置對(duì)象的訪問權(quán)限,保證對(duì)private的屬性的訪問
   field.setAccessible(true);
   return (String)field.get(object);
  } catch (Exception e) {
   return null;
  } 
 }

三、考慮父類繼承過來的屬性,包括四類訪問權(quán)限,private,protect,default,public

 /**
 * 根據(jù)屬性名獲取屬性元素,包括各種安全范圍和所有父類
 * 
 * @param fieldName
 * @param object
 * @return
 */
 private Field getFieldByClasss(String fieldName, Object object) {
 Field field = null;
 Class<?> clazz = object.getClass();
 for (; clazz != Object.class; clazz = clazz.getSuperclass()) {
 try {
 field = clazz.getDeclaredField(fieldName);
 } catch (Exception e) {
 // 這里甚么都不能拋出去。
 // 如果這里的異常打印或者往外拋,則就不會(huì)進(jìn)入
 
 }
 }
 return field;
 }

補(bǔ)充知識(shí):java 通過反射拿到類(對(duì)象)所有屬性的名字

在某些場合,我們可能只需要拿到一個(gè)對(duì)象的屬性名即可,不需要拿到方法。

比如說,在不借助于Hibernate或是Mybatis框架的時(shí)候,我們希望能夠?qū)懸粋€(gè)父類完成所有表的增刪改成,并且通過使用Object類的方式來使所有的子類都能使用父類方法。

下來的代碼是一個(gè)使用反射的方法來拿到對(duì)象的所有屬性。

 public static void getFieldName(Object t){
  Class clazz = t.getClass(); 
  // 獲取實(shí)體類的所有屬性信息,返回Field數(shù)組 
  Field[] fields = clazz.getDeclaredFields();
  int length= fields.length;
  while(length-->0) {
   System.out.println(fields[length].getName());
  }
 }

當(dāng)然,通過反射的方式我們還可以做很多很多很多事情,但是這里不重復(fù)舉例子了。

但是很值得說的就是,這些方法在java web編程的時(shí)候可能用得到,尤其是不借助于別人的框架,要自己寫框架的時(shí)候。

對(duì)bean的操作還可以使用BeanUtils,這個(gè)是Apache軟件基金會(huì)提供的,用于操作JavaBean的API。

以上這篇java反射機(jī)制根據(jù)屬性名獲取屬性值的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Unity2019-2020 個(gè)人版官方免費(fèi)激活詳細(xì)方法

    Unity2019-2020 個(gè)人版官方免費(fèi)激活詳細(xì)方法

    這篇文章主要介紹了Unity2019-2020 個(gè)人版官方免費(fèi)激活詳細(xì)方法,激活方法分位兩種一種是激活新許可證,一種是手動(dòng)激活,感興趣的朋友跟隨小編一起看看吧
    2021-04-04
  • java中為什么要謹(jǐn)慎使用Arrays.asList、ArrayList的subList

    java中為什么要謹(jǐn)慎使用Arrays.asList、ArrayList的subList

    這篇文章主要介紹了java中為什么要謹(jǐn)慎使用Arrays.asList、ArrayList的subList,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • SpringFramework應(yīng)用接入Apollo配置中心過程解析

    SpringFramework應(yīng)用接入Apollo配置中心過程解析

    這篇文章主要介紹了SpringFramework應(yīng)用接入Apollo配置中心過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • MyBatis分頁插件PageHelper的具體使用

    MyBatis分頁插件PageHelper的具體使用

    這篇文章主要介紹了MyBatis分頁插件PageHelper的具體使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • java線程間通訊的一些方法總結(jié)

    java線程間通訊的一些方法總結(jié)

    這篇文章主要介紹了java線程間通訊的一些方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 解決idea2020.2遇到pom.xml文件報(bào)錯(cuò)maven插件tomcat7的問題

    解決idea2020.2遇到pom.xml文件報(bào)錯(cuò)maven插件tomcat7的問題

    這篇文章主要介紹了idea2020.2遇到pom.xml文件報(bào)錯(cuò)maven插件tomcat7的問題,本文給大家分享解決方法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • MyBatis源碼淺析(一)開篇

    MyBatis源碼淺析(一)開篇

    源碼的學(xué)習(xí)好處多多,Mybatis源碼量少、邏輯簡單。下面將通過本文給大家詳解,低mybatis源碼淺析感興趣的朋友一起看看吧
    2016-11-11
  • SpringSecurity根據(jù)自定義異常返回登錄錯(cuò)誤提示信息(賬戶鎖定)

    SpringSecurity根據(jù)自定義異常返回登錄錯(cuò)誤提示信息(賬戶鎖定)

    本文介紹了在SpringSecurity中根據(jù)自定義異常返回登錄錯(cuò)誤提示信息的方法,特別是在賬戶鎖定時(shí),通過記錄輸錯(cuò)次數(shù)、重寫校驗(yàn)方法并拋出自定義異常,感興趣的可以了解一下
    2025-01-01
  • Java的Socket實(shí)現(xiàn)長連接以及數(shù)據(jù)的發(fā)送和接收方式

    Java的Socket實(shí)現(xiàn)長連接以及數(shù)據(jù)的發(fā)送和接收方式

    這篇文章主要介紹了Java的Socket實(shí)現(xiàn)長連接以及數(shù)據(jù)的發(fā)送和接收方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • springboot配置加密的正確姿勢(shì)分享

    springboot配置加密的正確姿勢(shì)分享

    在Spring boot開發(fā)中,需要在application.yml文件里配置數(shù)據(jù)庫的連接信息,或者在啟動(dòng)時(shí)傳入數(shù)據(jù)庫密碼,如果不加密,傳明文,數(shù)據(jù)庫就直接暴露了,下面這篇文章主要給大家介紹了關(guān)于springboot配置加密的正確姿勢(shì),需要的朋友可以參考下
    2022-11-11

最新評(píng)論

潼南县| 油尖旺区| 尉氏县| 安塞县| 宣威市| 昔阳县| 大连市| 贵定县| 出国| 彭泽县| 常州市| 东台市| 德化县| 北流市| 炉霍县| 哈尔滨市| 锡林浩特市| 沛县| 江川县| 佛冈县| 湖州市| 张家界市| 噶尔县| 织金县| 镇雄县| 黎川县| 梅州市| 永宁县| 镇原县| 集安市| 孝昌县| 溧阳市| 绥宁县| 陆川县| 西充县| 衡山县| 乳山市| 九寨沟县| 绥滨县| 青州市| 鄱阳县|