通过反射将一个对象的值赋给另一个对象中对应的属性 不需要用set、get
2017-11-05 02:41
519 查看
/** * @method test * @author BinCain * @return void * @date 2017/11/5 0005 2:19 * @Description: 将srcObj对象字段的值拷贝到destObj字段(前提是:两个对象中的字段名相同时) * 其实就是通过反射将值先存在map中,在遍历set进目标对象 */ public static void copyFieldToBean(Object srcObj,Object destObj){ Map<String, Object> srcMap = new HashMap<String, Object>(); Field[] srcFields = srcObj.getClass().getDeclaredFields(); 4000 for (Field srcField : srcFields) { try { srcMap.put(srcField.getName(), srcField.get(srcObj)); //获取属性值 } catch (Exception e) { e.printStackTrace(); } } Field[] destFields = destObj.getClass().getDeclaredFields(); for (Field destField : destFields) { if (srcMap.get(destField.getName()) == null) { continue; } try { destField.set(destObj, srcMap.get(destField.getName())); //给属性赋值 } catch (Exception e) { e.printStackTrace(); } } }
/** * @author BinCain * @version V1.0 * @Description: 第一个测试实体类:作为资源实体类 * @date 2017/11/5 0005 2:08 */ public class FirstPerson { public String name; public int age; public String otherField;
/** * @author BinCain * @version V1.0 * @Description: 第二个测试实体类:作为mubiao实体类 * @date 2017/11/5 0005 2:08 */ public class SecondPerson { public String name; public int age; public String xxxx;
/** * @method main * @author BinCain * @return void * @date 2017/11/5 0005 2:43 * @Description: 测试方法 通过反射遍历字段的z */
public static void main(String[] args) { FirstPerson firstPerson = new FirstPerson(); SecondPerson secondPerson = new SecondPerson(); firstPerson.setAge(18); firstPerson.setName("LiLi"); firstPerson.setOtherField("beautiful"); copyFieldToBean(firstPerson,secondPerson); Field[] fds = secondPerson.getClass().getDeclaredFields(); for (Field fd : fds) { try { System.out.println(fd.getName() + "=" + fd.get(secondPerson)); } catch (Exception e) { e.printStackTrace(); } } }
测试记结果如下:(符合预想)
name=LiLi
age=18
xxxx=null
Process finished with exit code 0
相关文章推荐
- 通过反射获取类中的属性,并且将类中的属性名称以及对应的值赋给另一个类中的对象
- 当需要把一个对象的值赋给另一个对象中对应的属性时……
- Python3基础 描述符类与自制property方法 __get__,__set__,__delete__方法 讲一个特殊的类的实例指派给另一个类的属性
- 反射-通过反射写一个通用的设置某个对象的某个属性为指定的值
- 通过反射设置Bean对象属性的一个实践
- 把一个对象的值赋给另一个对象中对应的属性
- 反射(通过反射写一个通用的设置某个对象的某个属性为指定的值)
- Java循环一个对象的所有属性,并通过反射给这些属性赋值/取值
- 反射_通过反射写一个通用的设置某个对象的某个属性为指定的值
- Object get["属性"]; java反射技术通过对象和属性名得到属性值
- Java---通过属性名反射获取get和set方法
- 同一个类不同对象,可以互相访问对方的私有成员而不通过get()或set()
- PropertyInfo 类: 通过将对象反射,从而获取此对象所有属性,及对应的值
- ios-day06-03(UITableView的索引条、一个对象作为另一个对象的属性、valueForKey和valueForKeyPath的区别)
- JavaScript中通过数组索引方式访问和属性名方式访问对象属性的一个小小误区
- C#中使用反射遍历一个对象属性及值的小技巧
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- [java]反射机制给属性使用set方法构造对象
- 反射示例3:写一个方法设置对象任意权限的属性的值
- Java 编程下通过反射获取一个类中的方法名和对应参数名