当我只在Java中引用它时,如何将对象分配给另一个对象?

时间:2012-04-26 07:42:19

标签: java list variable-assignment

我正在使用Java并拥有各种对象,我列出了这样的列表:

objx   o1;
objx   o2;
objx   o3;

objx olist [] = { o1, o2, o3 };

现在我想将其他对象分配给原始对象o1-o3,但使用列表。

类似的东西:

olist[0] = onew;

但在这种情况下,只有列表被更改,而不是原始对象o1。我怎么能用Java做到这一点?

3 个答案:

答案 0 :(得分:3)

你不能。 o1只是对堆中某个地址的引用,如果您为其他值分配o1,则只指向其他地址。

如果您需要更改对象o1指向的“内容”,则必须更改(可能通过设置者)其属性的值。

答案 1 :(得分:1)

你做不到。但是,您可以只存储数组,然后就可以更改数组每个位置引用的对象。

E.g。

objx olist[] = new objx[ 3 ];

olist[ 0 ] = new objx( );
olist[ 1 ] = new objx( );
olist[ 2 ] = new objx( );

然后,您可以通过索引数组来更改引用的任何对象:

...

olist[ 1 ] = onew;

答案 2 :(得分:-1)

您必须使用容器对象。即包含对" objx"的引用的对象宾语。最简单的容器对象是一个元素的数组,但它是一个非常难看且容易出错的解决方案。

请注意,为简洁起见,我省略了存取方法。您通常不应该像我这样使用直接成员访问。

public class ObjxContainer {
    public Objx objx;
}

...

ObjxContainer o1;
ObjxContainer o2;
ObjxContainer o3;
ObjxContainer[] arr = new ObjxContainer[] { o1, o2, o3 };

现在,访问ObjxContainer中的objx将获得您想要的效果:

arr[0].objx = new Objx();