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; } }
java中通过反射转换实体类
最新推荐文章于 2023-06-04 17:21:33 发布
该代码示例展示了一个泛型方法`ModelChange.transformToBean`,它接受一个源数据对象和目标实体类的Class,通过反射机制遍历源对象的字段,找到与目标类字段名称和类型匹配的属性并进行赋值。方法中处理了静态字段,并提供了基础的类型检查和转换。
摘要由CSDN通过智能技术生成