Sub2的目的是为了及时保存Sub1属性的快照。

例如。:

subService.update(sub1);
Sub2 sub2 = new Sub2(sub1);
subService.save(sub2);


以下实现的问题在于,每当将新成员变量添加到Sub1时,程序员都必须记住要更改Sub2中的复制构造函数,以将新成员从Sub1复制到Sub2。

Sub2复制构造函数如何自动从Sub1复制新成员变量?

Sub1和Sub2的基类:

public class Base{

    protected String a;
    protected String b;
    protected String c;
    // ...
    protected String z;

}


子1:

public class Sub1 extends Base {

    public Sub1(

        String a,
        String b,
        String c,
        // ...
        String z){

        this.a = a;
        this.b = b;
        this.c = c;
        // ...
        this.z = z;

    }

}


子2:

public class Sub2 extends Base {

    public Sub2(Sub1 s1){

        this.a = s1.getA();
        this.b = s1.getB();
        this.c = s1.getC();
        // ...
        this.z = s1.getZ();

    }


}

最佳答案

Java对于复制构造函数没有像C ++那样的特殊概念,因此它只是一个带有参数的构造函数。您不使用反射就无法知道类在运行时具有哪些成员,但是我建议让Sub1负责存储其当前状态。例如,将存储方法添加到Sub1,这将返回一个String数组(其成员)。然后Sub2可以将这些数组存储在某个地方。当您向Sub1添加新成员时,还更改Sub1的存储方法。这样,您不必触摸Sub1。

关于java - Sub2复制构造函数如何自动从Sub1复制新成员变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7048400/

10-11 15:27