首页 > 开发 > Java > 正文

java反射遍历实体类属性和类型,并赋值和获取值的简单方法

2024-07-13 10:06:25
字体:
来源:转载
供稿:网友

实例如下:

import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Date;/** * 获取实体类型的属性名和类型 * @param model 为实体类 * @author kou 为传入参数 */public class GetModelNameAndType{  public static void testReflect(Object model) throws SecurityException,      NoSuchMethodException, IllegalArgumentException,      IllegalAccessException, InvocationTargetException, InstantiationException  {    // 获取实体类的所有属性,返回Field数组    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反射遍历实体类属性和类型,并赋值和获取值的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表