java反射遍历实体类属性和类型,并赋值和获取值

来源:互联网 发布:二级c语言报名时间 编辑:程序博客网 时间:2024/05/13 05: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());                  }              }          }      }    }  

阅读全文
0 0
原创粉丝点击