以一个简单的user对象为例:
可以通过以下代码将一个User对象内的值赋值到另一个User对象中:这里假设 User
类有 name
、age
和 email
三个属性,并定义了相应的 setter 和 getter 方法
User user1 = new User("Tom", 20, "tom@test.com");
User user2 = new User();
user2.setName(user1.getName());
user2.setAge(user1.getAge());
user2.setEmail(user1.getEmail());
假如这个对象的属性非常多,而另一个对象可能就一个属性值不一样,那么使用大量的set方法虽然可行但是不好维护管理,当然也不优雅。这时候就可以通过使用 BeanUtils
工具类来实现:
User user1 = new User("Tom", 20, "tom@test.com");
User user2 = new User();
BeanUtils.copyProperties(user1, user2);
ps:也许可能存在一些新人开发人员使用 = 来进行复制然后set修改想要的字段,但是这样的方法他的对象实际上只有一个,在你对user2进行修改时,user1也被修改了举个例子:
User user1 = new User("Tom",20,"tom@test.com");
User user2 = new User();
user2 = user1;
user2.setName("ZhangSan");
System.err.println("user1 -----"+user1);
System.err.println("user2 -----"+user2);
结果是:
这样的结果根本原因是,使用 = 后 user2其实在堆中就是user1对象,就好比文件拷贝了一个桌面快捷方式
所以使用BeanUtils
工具类来实现是最优的选择
User user1 = new User("Tom",20,"tom@test.com");
User user2 = new User();
BeanUtils.copyProperties(user1,user2);
user2.setName("ZhangSan");
System.err.println("user1 -----"+user1);
System.err.println("user2 -----"+user2);