私は過去4日間Javaコードに問題があります。私の人生では、その根本原因を見つけることができません。ArrayListの参照の代わりに値を格納する
基本的には、オブジェクトのリストを属性として持つオブジェクトのリストのArrayListを作成します。しかし、リストの最初の要素にメソッドを適用しようとすると、他のオブジェクトも同様に更新されます!
public class Matrix {
public double[][] A;
public Matrix(double[][] A) {
this.A = A;
}
}
public class Model {
public Matrix M;
public Model(Matrix M) {
this.M = M;
}
public static Model(Model m) {
// modifying model a bit
return newModel;
}
}
public class MyProgram {
public ArrayList<Model> models;
public main() {
this.models = new ArrayList<Model>(NUM);
Matrix A = randomMatrix();
for (int i = 0; i < NUM; i++) {
this.models.add(new Model(A));
}
}
public otherMethod() {
this.models.set(0, changeModel(this.models.get(0)));
}
}
問題は、私はotherMethodを起動するたびに、リスト内のすべてのモデルが同様に変更を取得している:
は、ここに私のオブジェクト構造の基本的な概要です!
そして、何がうまくいきませんか?特定の問題/出力の問題については説明していませんか? –
Javaはあなたの言った通りです。そしてあなたは、あなたのすべてのモデルがそれらの中に同じ 'Matrix'を持つべきだと言っていました。だから、あるモデルで 'Matrix'を変更すると、他のすべてのモデルでも同じ' Matrix'を変更します。 –
@TheophileDano私は問題: – Mehdi