用过beanutils包的牛人请进 最近在研究beantutils包,其中的bean拷贝功能固然很好用,但是我不明白在什么情况下,对bean属性单个值的访问及修改,一定得使用beanutils包中的PropertyUtils.getxxxProperty(bean name,String propertyname),而不是使用getxxx()方法。因为后者不需要经过反射,效率更高些。一直没想到必须使用前者是什么情况。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 等等,还有,Property.copyBean()方法和Property.cloneBean()方法,一个拷贝,一个克隆,我试了结果都差不多,不知道本质差别在哪里? 最近在研究beantutils包,其中的bean拷贝功能固然很好用,但是我不明白在什么情况下,对bean属性单个值的访问及修改,一定得使用beanutils包中的PropertyUtils.getxxxProperty(bean name,String propertyname),而不是使用getxxx()方法:避免get或者set方法的名字命名不正确而引起的错误,此方法更加通用。Property.copyBean()方法和Property.cloneBean()方法,一个拷贝,一个克隆,我试了结果都差不多,不知道本质差别在哪里?copy是深clone,clonebean是浅clone。 深拷贝是重新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到底区别在哪里??? char to byte 大家晒下java开发代码的小技巧啊! 新安装了字体,怎么使用? 如何读取mp3的信息? 立贴,看看自己一年后能学到些什么知识。 #indef是什么来的? java中if语句包含范围的问题 位移运算,朋友们进来看看 JTextArea 怎么没有textChanged事件?怎样实现这个事件?(一定有分) 失误,一不小心分没加上,请回我的贴字的人来拿分,名单在内(我一次只能给100分)-1 弱问:怎么用类的名字创建一个对象 如何用java程序访问另外一个Java程序并执行测试?
避免get或者set方法的名字命名不正确而引起的错误,此方法更加通用。Property.copyBean()方法和Property.cloneBean()方法,一个拷贝,一个克隆,我试了结果都差不多,不知道本质差别在哪里?copy是深clone,clonebean是浅clone。
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到底区别在哪里???