考虑以下情况:
class A {
int x;
int y;
}
class B extends A {
int z;
}
现在,在代码中的某个地方,此类的用法如下:
A objA = getAFromSomewhere();
B objB = null;
在某种情况下,我想做类似的事情
objB = objA; // can't do this
objB.z = someZ;
当然,实际的对象要复杂一些,因此不仅仅是复制两个整数。但是它们也不是太复杂。
我知道我可以像这样为B写一个构造函数:
public B(A anA) {
this.a = anA.a;
this.b = anA.b;
this.z = 0;
}
但是,如果那确实是唯一的方法,那么我更喜欢将B的其他成员合并到A中。
更新考虑答案
我的问题还不够清楚。我了解objB = objA; 不能工作(因此我要求“类似”,意思是代码复杂度可比的东西),并且我知道浅拷贝和深拷贝的问题。
我一直在寻找一种复制基类成员的可能性(例如,使用clone())。您可能会理解,手动复制每个成员是一个不好的解决方案,因为它会增加代码的复杂性和冗余性。仍然感谢您的回复!
对于这一点,没有简单的解决方案,因为没有一种万能的解决方案。基本上,您不会在中包含所有信息B
,因此无法保证将拥有“明智的” B
对象。
您可能只想创建一个构造函数,在B
其中使用A
并将所有A
数据复制到new中B
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句