亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

二、不考慮從祖先類(lèi)繼承的屬性,只獲取當(dāng)前類(lèi)屬性,包括四類(lèi)訪問(wèn)權(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ì)象的訪問(wèn)權(quán)限,保證對(duì)private的屬性的訪問(wèn)
   field.setAccessible(true);
   return (String)field.get(object);
  } catch (Exception e) {
   return null;
  } 
 }

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

 /**
 * 根據(jù)屬性名獲取屬性元素,包括各種安全范圍和所有父類(lèi)
 * 
 * @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 通過(guò)反射拿到類(lèi)(對(duì)象)所有屬性的名字

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

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

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

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

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

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

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

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

相關(guān)文章

  • java中HashMap.values()轉(zhuǎn)為ArrayList()問(wèn)題

    java中HashMap.values()轉(zhuǎn)為ArrayList()問(wèn)題

    這篇文章主要介紹了java中HashMap.values()轉(zhuǎn)為ArrayList()問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Spring-Security對(duì)HTTP相應(yīng)頭的安全支持方式

    Spring-Security對(duì)HTTP相應(yīng)頭的安全支持方式

    這篇文章主要介紹了Spring-Security對(duì)HTTP相應(yīng)頭的安全支持方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java算法之堆排序代碼示例

    Java算法之堆排序代碼示例

    這篇文章主要介紹了Java算法之堆排序代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java后端實(shí)現(xiàn)生成驗(yàn)證碼圖片的示例代碼

    Java后端實(shí)現(xiàn)生成驗(yàn)證碼圖片的示例代碼

    驗(yàn)證碼是一種用于驗(yàn)證用戶身份或確保用戶操作安全的技術(shù)手段,通常以圖形、聲音或文字的形式出現(xiàn),本文主要介紹了如何通過(guò)java實(shí)現(xiàn)生成驗(yàn)證碼圖片,需要的可以參考下
    2023-12-12
  • spring事務(wù)異?;貪L實(shí)例解析

    spring事務(wù)異?;貪L實(shí)例解析

    這篇文章主要介紹了spring事務(wù)異?;貪L實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • java實(shí)現(xiàn)銀行管理系統(tǒng)

    java實(shí)現(xiàn)銀行管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)銀行管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Java并發(fā)之Condition案例詳解

    Java并發(fā)之Condition案例詳解

    這篇文章主要介紹了Java并發(fā)之Condition案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Jmeter后置處理器實(shí)現(xiàn)過(guò)程及方法應(yīng)用

    Jmeter后置處理器實(shí)現(xiàn)過(guò)程及方法應(yīng)用

    這篇文章主要介紹了Jmeter后置處理器實(shí)現(xiàn)過(guò)程及方法應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • SPRING FRAMEWORK BEAN作用域和生命周期原理解析

    SPRING FRAMEWORK BEAN作用域和生命周期原理解析

    這篇文章主要介紹了SPRING FRAMEWORK BEAN作用域和生命周期原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot使用RestTemplate的示例詳解

    SpringBoot使用RestTemplate的示例詳解

    RestTemplate繼承自InterceptingHttpAccessor并且實(shí)現(xiàn)了RestOperations接口,其中RestOperations接口定義了基本的RESTful操作,這些操作在RestTemplate中都得到了實(shí)現(xiàn),這篇文章主要介紹了SpringBoot使用RestTemplate,需要的朋友可以參考下
    2023-05-05

最新評(píng)論