5

为了测试这一点,我迅速整理了以下内容:

public class Test {

public static void main(String[] args) {
try {
    Employee e = new Employee();
    e.setName("A");
    Employee y = new Employee();
//  y=e;
    BeanUtils.copyProperties(y, e);
    e.setName("B");
    System.out.println(y.getName());
} catch (Exception e) {
    e.printStackTrace();
}

}

}   
class Employee{
    String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

这应该打印A而不是打印null。这里出了什么问题?我如何才能真正将属性从一个对象复制到另一个对象(而不是让它们指向相同的值),并且BeanUtils.copyProperties 是否首先创建了深层副本?

4

1 回答 1

3

您需要Employee公开您的课程。这段代码对我有用(并编译):

package com.sandbox;

import org.apache.commons.beanutils.BeanUtils;

public class Sandbox {

    public static void main(String[] args) {
        try {
            Employee e = new Employee();
            e.setName("A");
            Employee y = new Employee();
//  y=e;
            BeanUtils.copyProperties(y, e);
            e.setName("B");
            System.out.println(y.getName());
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static class Employee {
        String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

    }
}

当我删除publicfromEmployee时,它打印了“null”。

于 2013-06-19T20:25:26.907 回答