2016-04-17 17 views
-1

ArrayList.add()メソッドを呼び出すと、新しいオブジェクトが作成されてリストに追加されますか、または参照されたオブジェクトがリストに追加されますか?ArrayList.add()メソッドを呼び出すとどうなりますか?

例えば:

ArrayList<ClassA> a1ArrayList<ClassA> a2次のように我々は2 ArrayListがあるとします。

a2.add(a1.get(i))新しいオブジェクトを作成してa2に追加するか、2つの異なるリストから同じオブジェクトを参照しますか?

それは

のコピーは、Javaが値渡しまたは参照の質問で合格ではないのでしょうか?

ArrayList.add()メソッドの内部動作を知りたいので、それは渡されたパラメータのオブジェクトコピーを作成しますか?

+0

可能な複製を行うことを検討、というたくない場合は[?Javaは「バイ参照渡し」または「値渡し」](http://stackoverflow.com/質問/ 40480/java-pass-by-valueによる値渡し) – Savior

+0

@Pillarそれは 'ArrayList.add()'メソッドがどのように動作するかについてです。 – cnova

+0

「追加」について具体的な理由はありません。これに関しては、すべての方法が同じように機能します。 – Savior

答えて

3

同じオブジェクトを2つの異なるリストで参照します。

もちろん、何らかのデバッグ作業でこれを確認できます。

+3

または '==';を使用して) –

2

参照またはプリミティブはメソッドに渡すことができます。この方法も例外ではありません。

ArrayList<String> list = new ArrayList<>(); 
String s = "Hello"; 
list.add(s); // pass the reference. 

a2.add(a1.get(i))が、それは新しいオブジェクトを作成し、A2にそれを追加したり、2つの異なるリストから同じオブジェクトを参照しますでしょうか?

これは、それはあなたがそれを編集している場合を意味し、これら二つの異なるリストから同じオブジェクトを参照します

2

(同じオブジェクトを指します)両方のリストは、同じ参照のコピーを持っている意味しますある場所からのオブジェクト、別の場所からのオブジェクトも影響を受けます。

あなたは、そのクラスのimmutable

関連する問題