不変オブジェクトをメソッドに渡し、その値をメソッド内で変更したい場合や、別のオブジェクトをパラメーター参照に割り当てたい場合があります (例 1)。または、匿名の内部クラス内で別のオブジェクトを最終的なローカル変数に割り当てたいと思います (例 2)。これらのすべてのケースが可能なわけではないため、この目的のために Atomic(Integer|Long...) クラスまたはリスト (リストには複数のオブジェクトを含めることができるため、これは非常に悪いことです) を使用することがあります。または、オブジェクトを保持し、オブジェクトを変更できるクラスを作成することもできます。
public class ReferenceExample {
public static void main(String[] args) {
final Reference<String> string = new Reference<>("a");
// Example 1:
method(string);
// Example 2:
new Thread() {
@Override
public void run() {
string.set("c");
};
}.start();
}
public static void method(Reference<String> string) {
string.set("b");
}
private static class Reference<T> {
private T value;
public Reference() {}
public Reference(T value) {
this.value = value;
}
public T get() {
return value;
}
public void set(T value) {
this.value = value;
}
}
}
そのようなクラスが Java または共通ライブラリ (たとえば、Apache 共通プロジェクト) に既に存在するかどうか疑問に思っています。そうでない場合、これらの問題に対する他の良い解決策はありますか?