关于bean间属性拷贝

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提供了类似的功能,以字节码增强的形式

CSDN中已有一篇(http://blog.csdn.net/pengrg166/archive/2007/01/03/1472842.aspx)过两天再贴上我的案例:

 

你可能感兴趣的:(bean,.net,Blog)