3

私はJavaを使用しており、次のようなリストを作成するさまざまなオブジェクトがあります。

objx   o1;
objx   o2;
objx   o3;

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

ここで、リストを使用して、他のオブジェクトを元のオブジェクト o1-o3 に割り当てたいと考えています。

何かのようなもの:

olist[0] = onew;

ただし、この場合、元のオブジェクト o1 ではなく、リストのみが変更されます。Javaでこれを行うにはどうすればよいですか?

4

3 に答える 3

3

できません。o1ヒープ内のアドレスへの参照にすぎません。別の値を割り当てるo1と、他のアドレスを指すだけです。

o1オブジェクトが指す「コンテンツ」を変更する必要がある場合は、その属性の値を (おそらくセッターを介して) 変更する必要があります。

于 2012-04-26T07:46:15.130 に答える
1

できません。ただし、配列を格納するだけで、配列の各場所で参照されるオブジェクトを変更できます。

例えば

objx olist[] = new objx[ 3 ];

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

その後、配列にインデックスを付けるだけで、参照されているオブジェクトを変更できます。

...

olist[ 1 ] = onew;
于 2012-04-26T07:53:58.473 に答える
-1

コンテナオブジェクトを使用する必要があります。つまり、「objx」オブジェクトへの参照を含むオブジェクトです。最も単純なコンテナオブジェクトは1つの要素の配列ですが、これは非常に醜く、エラーが発生しやすいソリューションです。

簡潔にするために、アクセサメソッドを省略していることに注意してください。私がここで行っているように、通常はメンバーへの直接アクセスを使用しないでください。

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();
于 2012-04-26T07:57:14.313 に答える