0

私は以下を含むクラスを持ってAいます:

List aList = new ArrayList();

aList .add("1");
aList .add("2");
aList .add("3");

これで、クラスA.javaには別のクラスB.javaの参照が含まれ、クラスB.java にはget()およびset()メソッドを持つ別のリストが含まれます。

List bList;

クラスA.javaで、クラスB.javaのオブジェクトを作成し、 bListのsetmethodを呼び出して、このメソッドにA.javaリストを指定しています。

B b = new B();
b.setBList(aList);

ただし、aListが変更されると、bListの値も変更されます。main * (aList) *リスト参照リストを変更してもリストを作成するにはどうすればよいですか?

4

1 に答える 1

6

いわゆる防御コピーを作成する必要があります。

b.setBList(new ArrayList(aList));

これはリスト自体のみをコピーし、内部のオブジェクトはコピーしないことに注意してください。したがって、誰かがリストの最初のオブジェクトでミューテーションメソッドを呼び出した場合でも、これらの変更はBに表示されます(文字列は不変であるため、この例では明らかに問題ありません)。

于 2013-01-23T07:13:22.040 に答える