欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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;
      
      //關(guān)鍵。。??稍L問私有變量
      field[i].setAccessible(true);
      //給屬性設(shè)置
      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);
        // 調(diào)用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反射遍歷實體類屬性和類型,并賦值和獲取值的簡單方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot?Bean實例化流程解析

    SpringBoot?Bean實例化流程解析

    在SpringBoot啟動過程中會執(zhí)行refreshContext()方法,而在其執(zhí)行過程中,又會調(diào)用finishBeanFactoryInitialization()方法,該方法負責了Bean的實例化,那么本文將從源碼跟讀的角度來解析一下具體流程
    2023-08-08
  • 在java中使用SPI創(chuàng)建可擴展的應(yīng)用程序操作

    在java中使用SPI創(chuàng)建可擴展的應(yīng)用程序操作

    這篇文章主要介紹了在java中使用SPI創(chuàng)建可擴展的應(yīng)用程序操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • java中的常用集合類整理

    java中的常用集合類整理

    在本篇文章里小編給大家整理的是關(guān)于java中的常用集合類的相關(guān)知識點內(nèi)容,有興趣的朋友們學習下。
    2019-12-12
  • 淺談IDEA中Maven配置問題全解決

    淺談IDEA中Maven配置問題全解決

    這篇文章主要介紹了淺談IDEA中Maven配置問題全解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • Struts1簡介和入門_動力節(jié)點Java學院整理

    Struts1簡介和入門_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了Struts1簡介和入門的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 用Java實現(xiàn)春聯(lián)?支持自定義字體顏色

    用Java實現(xiàn)春聯(lián)?支持自定義字體顏色

    大家好,本篇文章主要講的是用Java編寫春聯(lián)?支持自定義字體顏色,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Java Array.sort()源碼分析講解

    Java Array.sort()源碼分析講解

    Arrays類中有一個sort()方法,該方法是Arrays類的靜態(tài)方法,在需要對數(shù)組進行排序時,非常的好用。但是sort()的參數(shù)有好幾種,下面我就為大家一一介紹,這幾種形式的用法
    2022-08-08
  • Java中文亂碼解決方案全解析,讓你的程序“說人話”!

    Java中文亂碼解決方案全解析,讓你的程序“說人話”!

    探索Java中文亂碼解決方案全解析,讓你的程序終于能“說人話”!厭倦了看著一串串的問號或者奇怪符號嗎?跟著我們的指南,一步步輕松解鎖中文亂碼的秘密,讓你的代碼清晰表達每一個字,需要的朋友可以參考下
    2024-02-02
  • Spring Boot之@Async異步線程池示例詳解

    Spring Boot之@Async異步線程池示例詳解

    在Spring Boot中,我們只需要通過使用@Async注解就能簡單的將原來的同步函數(shù)變?yōu)楫惒胶瘮?shù),下面這篇文章主要給大家介紹了關(guān)于Spring Boot之@Async異步線程池的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Java基礎(chǔ)篇之HashMap指定初始值

    Java基礎(chǔ)篇之HashMap指定初始值

    這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)篇之HashMap指定初始值的相關(guān)資料,HashMap是Java中常用的數(shù)據(jù)結(jié)構(gòu),它提供了高效的鍵值對存儲和查詢功能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12

最新評論