通过对象B对对象C的引用来设置对象A的最简单方法是什么?

时间:2019-03-17 02:55:35

标签: java object reference

Obj A = new Obj(1); //setting A.n = 1
Obj B = A;
B.n = 2;

所以A.n现在等于2,因为B是对A的引用。

Obj C = new Obj(3);
B = C;

因此,BC相同,而n仍为3时,A.n均为2。我的问题是我希望Java通过类似于这一行的代码来制作A的副本C,而不是将B设置为对C的引用。我怎样才能做到这一点?目前,我的解决方案是执行此操作,而不是B = C

B.n = C.n;

在这种情况下,A.n现在等于C.n。问题是如果要复制大约10种不同的原语怎么办?

我的确切情况是我将A作为参数传递给构造函数,然后将该构造函数分配给B。我试图通过使A等于B来通过引用A来操纵C。当我只做B = C时不起作用。因此,当我对B做某事时,我希望它确实发生在A上。除非我传递包含A的整个对象,否则我将无法直接访问A

Obj提供一个将自身的副本作为对象返回的方法(例如B = C.Copy())也无法解决,因为B仍然丢失了对A的引用。我想我可以做类似B.Set(C)的事情,其中​​Set()接受一个对象并一一复制所有的基元,但是我希望有一个更简单的解决方案。


编辑:我想证明这不是This question的重复。我将尝试将其用作解决我的问题的方法。如果我制作了C的深层副本,然后将B设置为等于它,那么B会失去对A的引用(我认为),我不希望这样做。我可以应用该解决方案的另一种方法是在B.Set()的地方实现我的C想法,对其进行深复制,然后将所有内容设置为相等。由于这种情况发生在A内,因此它会发送给 A。那能解决我的问题吗?有人看到该解决方案有问题吗?

0 个答案:

没有答案