通过反射把一个类的值传给另外一个类
2018-02-08 15:08
176 查看
【注】:该方法有些限制,1:仅支持参数名相同、类型相同的参数,仅支持其余类型转String,2:不支持包含泛型的,如List,Set,Map等类的转换,自己定义的类不包含泛型的可以。
public static <T> T assign(Object source, Class<T> clazz) { try { T target = clazz.newInstance(); Class sourceClass = source.getClass(); Field[] fields = sourceClass.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); Object value = field.get(source); if (value != null){ Class fType = field.getType(); Field field1; try { //如果source的参数不在目标类中,会报错并跳过。 field1 = clazz.getDeclaredField(field.getName()); } catch (NoSuchFieldException ne){ continue; } Class cType = field1.getType(); field1.setAccessible(true); if (!fType.equals(cType)){ //如果目标类是字符串的话其余的类可以转成字符串 if (cType.equals(String.class)){ field1.set(target,value.toString()); } } else { field1.set(target,value); } } } return target; } catch (Exception e){ e.printStackTrace(); } return null; }
相关文章推荐
- Reflect 通过反射获取自定义注解值给另外一个对象赋值
- Reflect 通过反射获取自定义注解值给另外一个对象赋值
- Reflect 通过反射获取自定义注解值给另外一个对象赋值
- 如何把一个DataTable中的某列通过表关系加到另外一个DataTable中
- 通过反射机制创建一个构造方法中参数数量可变的对象
- C# 通过反射为一个对象赋值
- Java 通过反射获取一个Field对象的泛型类型
- 通过反射将一个对象的值赋给另一个对象中对应的属性 不需要用set、get
- C#反射调用另外一个类中的私有字段和方法
- 通过反射动态创建了一个控件,如何再用发射通过该控件的名字得到该控件呢?
- 通过反射调用一个单列的方法(单列必须有“getInstance”方法)
- Android学习---通过内容提供者(ContentProvider)操作另外一个应用私有数据库的内容
- 【反射机制】两个类名不同但其属性相同的对象,如何将一个对象的值赋给另外一个对象
- 一个通过反射改变request的请求参数的方法
- Java 编程下通过反射获取一个类中的方法名和对应参数名
- Java反射之通过反射获取一个对象的方法信息
- 通过超链接从一个页面向另外一个页面传数据
- 通过包名打开另外一个应用程序和获取手机中已安装apk文件信息(PackageInfo、ResolveIn ...
- 通过反射创建一个构造函数带有参数的类的实例
- C#给枚举增加一个Attribute,并通过反射获取Attribute的值。(借鉴)