vo模型转化为实体类时存在很多字段的set,get调用,封装一个通过反射传值的方法进行参数传递。 传入两个实体类,一个是源数据类,一个数目标实体类的class 将源数据类的属性值,设置到目标实体类的中 使用时保证字段名相同,类型相同 public class ModelChange<T> { public Object transformToBean(Object source, Class<T> target) { // 得到类对象 Object o=null; Class sourceCla = source.getClass(); Field[] sourceFields = sourceCla.getDeclaredFields(); Field[] targetFields = target.getDeclaredFields(); try { o = target.newInstance(); for (int i = 0; i < targetFields.length; i++) { Field ft = targetFields[i]; // 设置些属性是可以访问的 boolean isStaticFt = Modifier.isStatic(ft.getModifiers()); if (isStaticFt) { continue; } // 设置些属性是可以访问的 ft.setAccessible(true); for (int j = 0; j < sourceFields.length; j++) { Field fs = sourceFields[j]; // 设置些属性是可以访问的 boolean isStaticFs = Modifier.isStatic(fs.getModifiers()); if (isStaticFs) { continue; } // 设置些属性是可以访问的 fs.setAccessible(true); String fName = ft.getName().toLowerCase(Locale.ROOT).replace("_",""); String sName= fs.getName().toLowerCase(Locale.ROOT); if (sName.equals(fName)) { if(fs.getType().toString().equals(ft.getType().toString())){ // 得到此属性的值 Object val = fs.get(source); ft.set(o, val); break; }//这里何以elseif添加判断条件设置类型转换的数值set } } } } } catch (Exception e) { e.printStackTrace(); } return (T)o; } }
01-09
2503
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交