java中如何遍历实体类的属性和数据类型以及属性值
2016-09-19 13:28
501 查看
java中如何遍历实体类的属性和数据类型以及属性值
package com.walkerjava.test; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Date; /*** * 遍历实体类的属性和数据类型以及属性值 * * @author LiBaozhen * @date 2013-1-4 上午10:25:02 * @company * @version v1.3 * @see 相关类 * @since 相关/版本 */ public class ReflectTest { public static void reflectTest(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { // 获取实体类的所有属性,返回Field数组 Field[] field = model.getClass().getDeclaredFields(); // 遍历所有属性 for (int j = 0; j < field.length; j++) { // 获取属性的名字 String name = field[j].getName(); // 将属性的首字符大写,方便构造get,set方法 name = name.substring(0, 1).toUpperCase() + name.substring(1); // 获取属性的类型 String type = field[j].getGenericType().toString(); // 如果type是类类型,则前面包含"class ",后面跟类名 System.out.println("属性为:" + name); if (type.equals("class java.lang.String")) { Method m = model.getClass().getMethod("get" + name); // 调用getter方法获取属性值 String value = (String) m.invoke(model); System.out.println("数据类型为:String"); if (value != null) { System.out.println("属性值为:" + value); } else { System.out.println("属性值为:空"); } } if (type.equals("class java.lang.Integer")) { Method m = model.getClass().getMethod("get" + name); Integer value = (Integer) m.invoke(model); System.out.println("数据类型为:Integer"); if (value != null) { System.out.println("属性值为:" + value); } else { System.out.println("属性值为:空"); } } if (type.equals("class java.lang.Short")) { Method m = model.getClass().getMethod("get" + name); Short value = (Short) m.invoke(model); System.out.println("数据类型为:Short"); if (value != null) { System.out.println("属性值为:" + value); } else { System.out.println("属性值为:空"); } } if (type.equals("class java.lang.Double")) { Method m = model.getClass().getMethod("get" + name); Double value = (Double) m.invoke(model); System.out.println("数据类型为:Double"); if (value != null) { System.out.println("属性值为:" + value); } else { System.out.println("属性值为:空"); } } if (type.equals("class java.lang.Boolean")) { Method m = model.getClass().getMethod("get" + name); Boolean value = (Boolean) m.invoke(model); System.out.println("数据类型为:Boolean"); if (value != null) { System.out.println("属性值为:" + value); } else { System.out.println("属性值为:空"); } } if (type.equals("class java.util.Date")) { Method m = model.getClass().getMethod("get" + name); Date value = (Date) m.invoke(model); System.out.println("数据类型为:Date"); if (value != null) { System.out.println("属性值为:" + value); } else { System.out.println("属性值为:空"); } } } } }
Java反射 在只知道类名的情况下,怎样给其中的私有属性赋值
利用反射能 //假设类名为A // 实例化类 A p = new A(); // 获取class Class c = p.getClass(); // 获取该类所有的字段 Field[] fields = c.getDeclaredFields(); // 遍历赋值 for (int i = 0; i < fields.length; i++) { String filedName = fields[i].getName(); // AccessibleTest类中的成员变量为private,故必须进行此操作 fields[i].setAccessible(true); // 判断类型 Class<?> type=fields[i].getType(); //获取字段类型 String typeName=type.getName(); System.out.println(type.getName()); // 对字段进行赋值 第一个参数为对象引用第二个参数为要附的值 //如果为字符串类型 if("java.lang.String".equals(typeName)){ fields[i].set(p, "1"); } //如果为日期类型 else if("java.util.Date".equals(typeName)){ fields[i].set(p, new Date()); } else{ fields[i].set(p, 1); } }
相关文章推荐
- java中如何遍历实体类的属性和数据类型以及属性值
- java中如何遍历实体类的属性和数据类型以及属性值
- java中如何遍历实体类的属性和数据类型以及属性值
- java中如何遍历实体类的属性和数据类型以及属性值
- java中如何遍历实体类的属性和数据类型以及属性值
- java遍历实体类的属性和数据类型以及属性值
- java遍历实体类的属性和数据类型以及属性值
- java中循环遍历实体类的属性和数据类型以及属性值
- java遍历实体类的属性和数据类型以及属性值
- 【转】java遍历实体类的属性和数据类型以及属性值
- java遍历实体类的属性和数据类型以及属性值
- java日期以及使用Java反射机制遍历实体类的属性和类型
- java中遍历实体类属性和类型,属性值
- 转载--java中遍历实体类属性和类型,属性值
- java中遍历实体类属性和类型,属性值
- java中遍历实体类属性和类型,属性值
- java中遍历实体类属性和类型,属性值
- java中遍历实体类属性和类型,属性值
- java中遍历实体类属性和类型,属性值
- java中遍历实体类属性和类型,属性值