※ ChatGPTを利用し、要約された質問です(原文:Java オブジェクトのコピーについて)
Java オブジェクトのコピーについて
このQ&Aのポイント
Javaのオブジェクトのコピーについてわからない部分があります。具体的には、変数のメモリ上のアドレスを別のオブジェクトにコピーしたい場合の方法について教えてください。
現在のコードでは、変数のメモリ上のアドレスが格納されているだけで、値の変更が他のオブジェクトにも影響を与えてしまいます。どのようにして別のアドレスでコピーすることができるのでしょうか。
Javaのオブジェクトのコピーについて詳しく教えてください。
Java オブジェクトのコピーについて
現在、Javaの勉強を行っているのですが、
オブジェクトのコピーについてどうしてもわからない部分があります。
以下についてご教授お願いいたします。
-----------------------------
(型定義)
public class TypeAB{
List<String[]> ab = new ArrayList<String[]>;
public List<String[]> getAb(){
return ab;
}
public setAb(List<String[]> ab){
this.ab = ab;
}
}
------------------------------
public class mst{
private void function(){
TypeAB hoge1 = new TypeAB();
TypeAB hoge2 = new TypeAB();
List<String[]> ab = new ArrayList<String[]>;
String[] a = {"1","2","3"};
String[] b = {"4","5","6"};
ab.add(a);
ab.add(b);
hoge1.setAb(ab);
hoge2.setAb(ab);
}
}
------------------------------
上記処理についてなのですが、
現在のままでは、最終的な[hoge][hoge1]には
変数[a][b]のメモリ上のアドレスが格納されているだけで、
hoge1.ab.get(0).a = {"4","5","6"}とした場合に、
hoge2の変数[a]の値まで変わってしまいます。
これをどうにかして最終的な、
hoge1.setAb(ab);
hoge2.setAb(ab);
の部分で別アドレスでコピーしたいのです。
言語:Java
フレームワーク:SAStrutsです。
よろしくお願いいたします。
お礼
数々のご指摘ありがとうございます。 目的としては、最終的に[hoge1][hoge2]に[ab]をセットする際に、 変数[a][b]を別のアドレスで登録したかったのですが・・・ 私の説明力の無さと、処理が間違いだらけなので、 今回は一旦閉めさせていただきます。 もう少し煮詰めてから再度投稿したいと思います。 その際にはまたよろしくお願いいたします。 回答ありがとうございました。