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

Java如何獲取對象屬性及對應(yīng)值

 更新時間:2020年11月10日 10:05:04   作者:牛鼻子老趙  
這篇文章主要介紹了Java如何獲取對象屬性及對應(yīng)值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

利用反射獲取對象的所有屬性及對應(yīng)的值

1、獲取屬性名數(shù)組

private static String[] getFiledName(Object o) {
    Field[] fields = o.getClass().getDeclaredFields();
    String[] fieldNames = new String[fields.length];
    for (int i = 0; i < fields.length; i++) {
      fieldNames[i] = fields[i].getName();
    }
    return fieldNames;
  }

2、根據(jù)屬性名獲取屬性值

private static Object getFieldValueByName(String fieldName, Object o) {
    try {
      String firstLetter = fieldName.substring(0, 1).toUpperCase();
      String getter = "get" + firstLetter + fieldName.substring(1);
      Method method = o.getClass().getMethod(getter, new Class[] {});
      Object value = method.invoke(o, new Object[] {});
      return value;
    } catch (Exception e) {
      logger.error("獲取屬性值失??!" + e, e);
    }
    return null;
  }

3、獲取屬性的數(shù)據(jù)類型

private static Object getFiledType(String fieldName, Object o) {
    Field[] fields = o.getClass().getDeclaredFields();
    for (Field field : fields) {
      if (Objects.equals(fieldName, field.getName())) {
        return field.getType();
      }
    }
    return null;
  }

4、完整代碼及其引入的包

package com.hao.search;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Joiner;

public class ObjectPaseUtils {

  private static Logger logger = LoggerFactory.getLogger(ObjectPaseUtils.class);

  /**
   * @desc 將對象轉(zhuǎn)換成指定String
   * @param <T>
   * @param t
   * @return
   */
  public static <T> String objectToStr(T t) {
    List<String> list = new ArrayList<String>();
    String[] fieldNames = getFiledName(t);
    for (int i = 0; i < fieldNames.length; i++) {
      String name = fieldNames[i];
      Object value = getFieldValueByName(name, t);
      if (null != value) {
        if (getFiledType(name, t).equals(Date.class)) {
          value = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((Date)value);
        }
        list.add(name + " : " + value);
      }
    }
    if (CollectionUtils.isNotEmpty(list)) {
      return Joiner.on("\r").skipNulls().join(list);
    }
    return null;
  }

  /**
   * @desc 獲取屬性名數(shù)組
   * @param o
   * @return
   */
  private static String[] getFiledName(Object o) {
    Field[] fields = o.getClass().getDeclaredFields();
    String[] fieldNames = new String[fields.length];
    for (int i = 0; i < fields.length; i++) {
      fieldNames[i] = fields[i].getName();
    }
    return fieldNames;
  }

  /**
   * @desc 根據(jù)屬性名獲取屬性值
   * @param fieldName
   * @param o
   * @return
   */
  private static Object getFieldValueByName(String fieldName, Object o) {
    try {
      String firstLetter = fieldName.substring(0, 1).toUpperCase();
      String getter = "get" + firstLetter + fieldName.substring(1);
      Method method = o.getClass().getMethod(getter, new Class[] {});
      Object value = method.invoke(o, new Object[] {});
      return value;
    } catch (Exception e) {
      logger.error("獲取屬性值失?。? + e, e);
    }
    return null;
  }

  /**
   * @desc 獲取屬性的數(shù)據(jù)類型
   * @param fieldName
   * @param o
   * @return
   */
  private static Object getFiledType(String fieldName, Object o) {
    Field[] fields = o.getClass().getDeclaredFields();
    for (Field field : fields) {
      if (Objects.equals(fieldName, field.getName())) {
        return field.getType();
      }
    }
    return null;
  }

}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • RestTemplate設(shè)置超時時間及返回狀態(tài)碼非200處理

    RestTemplate設(shè)置超時時間及返回狀態(tài)碼非200處理

    這篇文章主要為大家介紹了RestTemplate設(shè)置超時時間及返回狀態(tài)碼非200處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Mybatis實現(xiàn)自動生成增刪改查代碼

    Mybatis實現(xiàn)自動生成增刪改查代碼

    這篇文章主要為大家詳細(xì)介紹了Mybatis如何實現(xiàn)自動生成增刪改查代碼的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-01-01
  • 實現(xiàn)一個簡單Dubbo完整過程詳解

    實現(xiàn)一個簡單Dubbo完整過程詳解

    這篇文章主要為大家介紹了實現(xiàn)一個簡單Dubbo完整過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 解決springboot配置文件組解決自動配置屬性無法注入問題

    解決springboot配置文件組解決自動配置屬性無法注入問題

    在使用Spring Boot時,可能會遇到配置文件屬性注入失敗的問題,本文描述了一個案例,其中嘗試使用profile文件組指定不同環(huán)境下的配置文件,但遇到了屬性無法成功注入的情況,提供的解決辦法是將Spring Boot的版本號從2.2.0.RELEASE升級到2.4.0
    2024-09-09
  • 在Java8中如何避開空指針異常

    在Java8中如何避開空指針異常

    這篇文章主要給大家介紹了關(guān)于在Java8中如何風(fēng)騷走位的避開空指針異常的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Java8具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Spring框架+jdbcTemplate實現(xiàn)增刪改查功能

    Spring框架+jdbcTemplate實現(xiàn)增刪改查功能

    這篇文章主要介紹了Spring框架+jdbcTemplate實現(xiàn)增刪改查功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • springcloud gateway設(shè)置context-path的操作

    springcloud gateway設(shè)置context-path的操作

    這篇文章主要介紹了springcloud gateway設(shè)置context-path的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 異常排查記錄amqp協(xié)議鏈接陷阱

    異常排查記錄amqp協(xié)議鏈接陷阱

    這篇文章主要介紹了一次關(guān)于amqp協(xié)議鏈接陷阱-An?unexpected?connection?driver?error?occured的異常排查記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • 詳解Spring Boot下使用logback 記錄多個文件日志

    詳解Spring Boot下使用logback 記錄多個文件日志

    這篇文章主要介紹了詳解Spring Boot下使用logback 記錄多個文件日志,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Mybatis多個字段模糊匹配同一個值的案例

    Mybatis多個字段模糊匹配同一個值的案例

    這篇文章主要介紹了Mybatis多個字段模糊匹配同一個值的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09

最新評論

稷山县| 辽阳县| 扎鲁特旗| 邢台县| 扶风县| 得荣县| 平顺县| 余姚市| 收藏| 汝阳县| 高台县| 五华县| 合阳县| 屯昌县| 石渠县| 滦南县| 涿鹿县| 鄂尔多斯市| 崇信县| 明星| 当涂县| 隆昌县| 东乡县| 德州市| 青河县| 城固县| 门源| 原平市| 奈曼旗| 建昌县| 五台县| 连城县| 高台县| 上思县| 通州区| 武功县| 临武县| 梧州市| 泾源县| 阳春市| 潜山县|