java中如何遍历实体类的属性和数据类型以及
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何遍历实体类的属性和数据类型以及相关的知识,希望对你有一定的参考价值。
可以通过反射获取到属性方法信息:
public class Userprivate int id;
private String name;
private double amount;
public int getId()
return id;
public void setId(int id)
this.id = id;
public String getName()
return name;
public void setName(String name)
this.name = name;
public double getAmount()
return amount;
public void setAmount(double amount)
this.amount = amount;
获取类信息:
import java.lang.reflect.Field;import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
public class ReflectDemo
public static void main(String[] args)
Class clz = User.class;
// 获取所有自己定义的属性(不包含从Object继承的,如果需要可使用getFields()方法)
Field[] fields = clz.getDeclaredFields();
for (Field f : fields)
System.out.println("属性名称:" + f.getName() + ",属性类型:" + f.getType().getName());
// 获取所有自己定义的方法(同样不包含继承的)
Method[] methods = clz.getDeclaredMethods();
for (Method m : methods)
System.out.println("方法名称:" + m.getName());
System.out.println("返回值类型:" + m.getReturnType().getName());
// 获取方法的所有参数
Parameter[] parameters = m.getParameters();
for (Parameter p : parameters)
System.out.println("参数类型:" + p.getType().getName());
System.out.println("==========================================");
参考技术A 通过java的反射可以实现,百度一下就知道了
java遍历实体类的属性和数据类型以及属性值
遍历实体类的树形和数据类型一级属性值
/** * 遍历实体类的属性和数据类型以及属性值 * @param model * @throws NoSuchMethodException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws InvocationTargetException */ 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("属性值为:空"); } } } }
由于我的实体bean里有double类型,我又不想用其封装类的方法获取值,于是我在他的基础上又加入了一段代码,
if (type.equals("double")) { Method m = model.getClass().getMethod("get" + name); double value = (double) m.invoke(model); System.out.println("数据类型为:double"); if (value >0) { System.out.println("属性值为:" + value); } else { System.out.println("属性值为:空"); } } System.out.println("属性类型为:"+type);
这样一来,就可以知道属性类型是什么,可以很好的加判断语句了。当然原文代码还有很多值得优化的地方,我这里就没有进行优化,准备等我将它与poi导出整合之后再来优化。
以上是关于java中如何遍历实体类的属性和数据类型以及的主要内容,如果未能解决你的问题,请参考以下文章