これは私が表現するのに少し紛らわしい質問ですが、私は最善を尽くします。
それで:
ArrayList<Object> fieldList = new ArrayList<Object>();
次に、この配列にさまざまな変数をダンプします。
fieldList.add(objectsURL); //string
fieldList.add(X); //int
fieldList.add(Y); //int
...
変数を変更すると、配列の値も変更されます。配列が値自体ではなく、メモリへの参照を格納していることを確認します。
ただし、配列からデータを取得する場合は、それを設定します...
Object object = ((String)this.fieldList.get(0));
次に、オブジェクトを設定します
object = "meeep!"
objectsURLが「meep!」に設定されていません むしろ、元の値を保持します。
これは、「オブジェクト」が元の変数を参照しておらず、代わりにメモリ内の新しい不変の文字列を指しているためだと思います。
私が思うすべての予想されるJavaの振る舞い....しかし、実際の元の変数を設定するにはどうすればよいでしょうか?これはJavaで可能ですか?
つまり、言い換えれば。「fieldList」へのアクセスのみが与えられた場合、「objectsURL」の値を変更することは可能ですか?
したがって、次の場合:
String objectsURL = "www.google.com"
fieldList.add(objectsURL);
fieldListからの参照のみを使用してobjectsURLを「www.stackoverflow.com」に設定する方法はありますか?fieldListに「objectsURL」が含まれているという事実を変更したくありません。変数「objectsURL」に実際に含まれている文字列を変更したいと思います。
そうでない場合、同じことを達成するための代替方法はありますか?
私の質問が問題を十分に説明していることを願っています。
私のユースケースは、多数のオブジェクトのシリアル化/逆シリアル化システムを作成しようとしています。私はすべてのフィールドを読み取りと書き込みの両方で取得できる配列リストに入れたいと思っていました。したがって、field [0]=blahとblah=field[0]の長いリストをハードコーディングする必要がなくなりました。新しいフィールドを次のフィールドの前に追加するたびに、番号を付け直す必要があるという絶え間ない苦痛。
(私はGWTを使用しており、これはクライアント側のみであるため、Javaの組み込みシリアル化を使用することはできません。)
ありがとう、