Property.copyBean()方法和Property.cloneBean()方法,一个拷贝,一个克隆。深拷贝是重新new一块空间,重新拥有一份资源,浅拷贝只是将引用指向那块资源。可是,我的demo显示,两个都是深拷贝,如下:
copyProperties()方法:
Employee srcEmp = new Employee();
srcEmp.setName("name1");
Employee destEmp = new Employee();
PropertyUtils.copyProperties(destEmp, srcEmp);
// 测试是深拷贝还是浅拷贝
srcEmp.setName("name2");
System.out.println("访问拷贝Bean普通类型属性:");
System.out.println(destEmp.getName());
System.out.println("访问拷贝Bean自定义类型属性:");
System.out.println(destEmp.getAddress()); 结果为:
访问拷贝Bean普通类型属性:
name1cloneProperties()方法:
Employee emp1 = new Employee();
emp1.setName("name1");
Employee emp2 = (Employee) BeanUtils.cloneBean(emp1);
// 测试是深拷贝还是浅拷贝
emp1.setName("name2");
System.out.println("访问克隆Bean普通类型属性:");
System.out.println(emp2.getName());
结果为:
访问克隆Bean普通类型属性:
name1到底区别在哪里???
copyProperties()方法:
Employee srcEmp = new Employee();
srcEmp.setName("name1");
Employee destEmp = new Employee();
PropertyUtils.copyProperties(destEmp, srcEmp);
// 测试是深拷贝还是浅拷贝
srcEmp.setName("name2");
System.out.println("访问拷贝Bean普通类型属性:");
System.out.println(destEmp.getName());
System.out.println("访问拷贝Bean自定义类型属性:");
System.out.println(destEmp.getAddress()); 结果为:
访问拷贝Bean普通类型属性:
name1cloneProperties()方法:
Employee emp1 = new Employee();
emp1.setName("name1");
Employee emp2 = (Employee) BeanUtils.cloneBean(emp1);
// 测试是深拷贝还是浅拷贝
emp1.setName("name2");
System.out.println("访问克隆Bean普通类型属性:");
System.out.println(emp2.getName());
结果为:
访问克隆Bean普通类型属性:
name1到底区别在哪里???
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货