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

java反射遍歷實體類屬性和類型,并賦值和獲取值的簡單方法

 更新時間:2017年04月13日 10:01:54   投稿:jingxian  
下面小編就為大家?guī)硪黄猨ava反射遍歷實體類屬性和類型,并賦值和獲取值的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

實例如下:

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Date;

/**
 * 獲取實體類型的屬性名和類型
 * @param model 為實體類
 * @author kou 為傳入?yún)?shù)
 */
public class GetModelNameAndType
{

  public static void testReflect(Object model) throws SecurityException,
      NoSuchMethodException, IllegalArgumentException,
      IllegalAccessException, InvocationTargetException, InstantiationException
  {
    // 獲取實體類的所有屬性,返回Field數(shù)組
    Field[] field = model.getClass().getDeclaredFields();
    // 獲取屬性的名字
    String[] modelName = new String[field.length];
    String[] modelType = new String[field.length];
    for (int i = 0; i < field.length; i++)
    {
      // 獲取屬性的名字
      String name = field[i].getName();
      modelName[i] = name;
      // 獲取屬性類型
      String type = field[i].getGenericType().toString();
      modelType[i] = type;
      
      //關鍵。。。可訪問私有變量
      field[i].setAccessible(true);
      //給屬性設置
      field[i].set(model, field[i].getType().getConstructor(field[i].getType()).newInstance("kou"));

      // 將屬性的首字母大寫
      name = name.replaceFirst(name.substring(0, 1), name.substring(0, 1)
          .toUpperCase());

      if (type.equals("class java.lang.String"))
      { 
        // 如果type是類類型,則前面包含"class ",后面跟類名
        Method m = model.getClass().getMethod("get" + name);
        // 調用getter方法獲取屬性值
        String value = (String) m.invoke(model);
        if (value != null)
        {

          System.out.println("attribute value:" + value);
        }

      }
      if (type.equals("class java.lang.Integer"))
      {
        Method m = model.getClass().getMethod("get" + name);
        Integer value = (Integer) m.invoke(model);
        if (value != null)
        {
          System.out.println("attribute value:" + value);
        }
      }
      if (type.equals("class java.lang.Short"))
      {
        Method m = model.getClass().getMethod("get" + name);
        Short value = (Short) m.invoke(model);
        if (value != null)
        {
          System.out.println("attribute value:" + value);
        }
      }
      if (type.equals("class java.lang.Double"))
      {
        Method m = model.getClass().getMethod("get" + name);
        Double value = (Double) m.invoke(model);
        if (value != null)
        {
          System.out.println("attribute value:" + value);
        }
      }
      if (type.equals("class java.lang.Boolean"))
      {
        Method m = model.getClass().getMethod("get" + name);
        Boolean value = (Boolean) m.invoke(model);
        if (value != null)
        {
          System.out.println("attribute value:" + value);
        }
      }
      if (type.equals("class java.util.Date"))
      {
        Method m = model.getClass().getMethod("get" + name);
        Date value = (Date) m.invoke(model);
        if (value != null)
        {
          System.out.println("attribute value:"
              + value.toLocaleString());
        }
      }
    }
  }

  public static void main(String[] args)
  {
    try
    {
      testReflect(new VO());
    }
    catch (SecurityException e)
    {
      e.printStackTrace();
    }
    catch (IllegalArgumentException e)
    {
      e.printStackTrace();
    }
    catch (NoSuchMethodException e)
    {
      e.printStackTrace();
    }
    catch (IllegalAccessException e)
    {
      e.printStackTrace();
    }
    catch (InvocationTargetException e)
    {
      e.printStackTrace();
    }
    catch (InstantiationException e)
    {
      e.printStackTrace();
    }
  }

}

以上這篇java反射遍歷實體類屬性和類型,并賦值和獲取值的簡單方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java 并發(fā)編程之ThreadLocal詳解及實例

    Java 并發(fā)編程之ThreadLocal詳解及實例

    這篇文章主要介紹了Java 并發(fā)編程之ThreadLocal詳解及實例的相關資料,需要的朋友可以參考下
    2017-02-02
  • Java????????HashMap遍歷方法匯總

    Java????????HashMap遍歷方法匯總

    這篇文章主要介紹了Java????????HashMap遍歷方法匯總,HashMap?的遍歷方法有很多種,不同的?JDK?版本有不同的寫法,下文關于其遍歷方法總結需要的小伙伴可以參考一下
    2022-05-05
  • Java枚舉學習之定義和基本特性詳解

    Java枚舉學習之定義和基本特性詳解

    枚舉是JAVA?5.0后增加的一個重要類型。可以用來表示一組取值范圍固定的變量。本文將通過示例為大家詳細講解枚舉的定義和基本特性,感興趣的可以了解一下
    2022-08-08
  • java如何給指定類配置單獨的日志文件輸出

    java如何給指定類配置單獨的日志文件輸出

    這篇文章主要介紹了java如何給指定類配置單獨的日志文件輸出問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • MyBatis3傳遞多個參數(shù)(Multiple Parameters)

    MyBatis3傳遞多個參數(shù)(Multiple Parameters)

    這篇文章主要介紹了MyBatis3傳遞多個參數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • SpringCloud?Feign?傳輸Date類型參數(shù)存在誤差的問題

    SpringCloud?Feign?傳輸Date類型參數(shù)存在誤差的問題

    這篇文章主要介紹了SpringCloud?Feign?傳輸Date類型參數(shù)存在誤差的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 使用mybatis-plus報錯Invalid bound statement (not found)錯誤

    使用mybatis-plus報錯Invalid bound statement (not found)錯誤

    這篇文章主要介紹了使用mybatis-plus報錯Invalid bound statement (not found)錯誤,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Spring Boot簡介與快速搭建詳細步驟

    Spring Boot簡介與快速搭建詳細步驟

    SpringBoot其本身沒有添加什么新的技術,就是整合了一些現(xiàn)有的框架,并提供了一些默認的配置,就是這些默認的配置,極大的提高了我們的開發(fā)效率。這篇文章主要介紹了Spring Boot簡介與快速搭建,需要的朋友可以參考下
    2021-05-05
  • java獲取properties屬性文件示例

    java獲取properties屬性文件示例

    Properties類表示了一個持久的屬性集。Properties可保存在流中或從流中加載。屬性列表中每個鍵及其對應值都是一個字符串。本文使用java讀取這些屬性,看下面詳細介紹吧
    2014-01-01
  • springmvc限流攔截器的示例代碼

    springmvc限流攔截器的示例代碼

    本篇文章主要介紹了springmvc限流攔截器的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12

最新評論

泾源县| 阿图什市| 呼伦贝尔市| 施甸县| 棋牌| 苏尼特右旗| 新巴尔虎左旗| 彭山县| 绵竹市| 广元市| 普宁市| 红原县| 铜陵市| 铅山县| 故城县| 左贡县| 德兴市| 绥德县| 长葛市| 紫云| 安仁县| 定襄县| 青海省| 遵化市| 益阳市| 阳泉市| 义马市| 册亨县| 太谷县| 信丰县| 富平县| 肥西县| 桑日县| 秦皇岛市| 威海市| 海兴县| 进贤县| 图木舒克市| 莱州市| 恩平市| 营山县|