? ? 这个方法使用到了java.lang.reflect包的Field类,Method类。
??? 此方法遍历实体类所有属性,对于常用的java包装类类型和java.util.Date,输出其属性值,如果有其它类型,则需自己扩展。
public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
??????? Field[] field = model.getClass().getDeclaredFields();??????? //获取实体类的所有属性,返回Field数组??
??????????? for(int j=0 ; j<field.length ; j++){???? //遍历所有属性
??????????????? String name = field[j].getName();??? //获取属性的名字
???????????????? System.out.println("attribute name:"+name);????????????????
??????????????? String type = field[j].getGenericType().toString();??? //获取属性的类型
??????????????? if(type.equals("class java.lang.String")){?? //如果type是类类型,则前面包含"class ",后面跟类名
??????????????????? Method m = model.getClass().getMethod("get"+name);
??????????????????? String value = (String) m.invoke(model);??? //调用getter方法获取属性值
??????????????????? 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());
??????????????????? }
??????????????? }????????????????
??????????? }
??? }