dポイントプレゼントキャンペーン実施中!

ArrayListはオブジェクトのポインタを渡している?

例えば、一つのメソッド内に以下のように書くと、出力は最下部のようになります。
listに入れたモデルを取り出さずにModelを変更しても、listに入れたモデルを変更したのと同じことが出来ています。

C言語で言うところの(Cはあまり覚えていませんが…)、ポインタを渡しているようなイメージになるのでしょうか?

--コード--

Model model1 = new Model("model1");
Model model2 = new Model("model2");

ArrayList list = new ArrayList<Model>();

list.add(model1); list.add(model2);
showList(list);

model1.setName("model1_");

showList(list);


--出力--

model1
model2
model1_
model2

A 回答 (2件)

Java としては「ポインタ」という表現はしませんが, Java のオブジェクトは基本的に全部「ポインタ」です.

    • good
    • 0

それはそうでしょうね。



それを回避したいのであれば、copy() を使う訳です。(copy() は必要に応じてオーバーライドしておかないといけない)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!