溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2020-09-02 11:01:23 來源:腳本之家 閱讀:301 作者:jingxian 欄目:編程語言

實(shí)例如下:

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

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

  public static void testReflect(Object model) throws SecurityException,
      NoSuchMethodException, IllegalArgumentException,
      IllegalAccessException, InvocationTargetException, InstantiationException
  {
    // 獲取實(shí)體類的所有屬性,返回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反射遍歷實(shí)體類屬性和類型,并賦值和獲取值的簡單方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI