javaBean间属性拷贝有两种方式。
1.使用PropertyUtils.copyProperties()拷贝一个bean中的属性到另一个bean中,第一个参数是目标bean,第二个参数是源bean,代码片段见下
Book srcBook = new Book();
srcBook.setName("爱你是我的错");
Novel novel= new Novel();//小说具有书的属性。
PropertyUtils.copyProperties(novel, srcBook);
// 输出
// 爱你是我的错
System.out.println(novel.getName());
PropertyUtils.copyProperties()将检索源bean中所有的属性,然后将其值分配给目标bean中相同的属性,如果上面的例子中Book bean有一个author属性,类型是Person,这个方法将分配其的references给destBook,也就是说copyProperties()方法不会克隆属性的值.只是拷贝一个对象在内存中的地址而已,看下面的代码片段
Person author = new Person();
author.setName("小欧");
Book srcBook = new Book();
srcBook.setName("爱你是我的错");
srcBook.setAuthor(author);
Novel novel= new Novel();//小说具有书的属性。
PropertyUtils.copyProperties(novel, srcBook);
// 作者的内存地址一样
// 作者的内存地址一样
if (srcBook.getAuthor() == novel.getAuthor()) {
System.out.println("作者的内存地址一样");
}
copyProperties()方法也能将Map中的内容分酌给bean,如果key同目标bean的属性名相同的话
Map srcMap = new HashMap();
srcMap.put("name", "爱你是我的错");
Book destBook = new Book();
PropertyUtils.copyProperties(destBook, srcMap);
// 输出
// 爱你是我的错
System.out.println(destBook.getName());
2.Cglib提供了类似的功能,以字节码增强的形式