Java 如何将所有属性从父bean复制到子bean?

Java 如何将所有属性从父bean复制到子bean?,java,apache-commons,apache-commons-beanutils,Java,Apache Commons,Apache Commons Beanutils,我有一个父子层次结构bean,希望将所有属性从父对象复制到子对象 我想我可以使用ApacheCommonsBeanUtils,但失败了。但是为什么呢 public class ParentChildCopyTest { class Person { String name; } class Child extends Person { private String birthday; } @Test public

我有一个父子层次结构bean,希望将所有属性从父对象复制到子对象

我想我可以使用ApacheCommons
BeanUtils
,但失败了。但是为什么呢

public class ParentChildCopyTest {
    class Person {
        String name;
    }

    class Child extends Person {
        private String birthday;
    }

    @Test
    public void test() throws Exception {
        Person p = new Person();
        p.name = "Dummy";

        Child c = new Child();
        org.apache.commons.beanutils.BeanUtils.copyProperties(c, p);
        assertEquals(p.name, c.name); //this FAILS
    }
}

旁注:当然,我的现实世界对象要复杂得多。我正在寻找一种不必手动将所有属性复制为getter/setter的方法(特别是在这种特定情况下,我不想添加getter/setter)。

BeanUtils需要公共getter和setter,它不会对私有字段做任何事情

但是,您可以使用反射,例如,使用弹簧ReflectionUtils

此库允许您读取和写入私有字段。 例如:

是的,添加getter/setter确实有效。所以也许没有他们我就无法让我们生活下去。。。