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/