有時我想將不可變對象傳遞給方法,並在方法內部更改其值,或者我想將另一個對象分配給參數引用(示例1)。或者我想將匿名內部類的另一個對象分配給最終的局部變量(示例2)。因爲所有這些情況都是不可能的,所以有時我會使用Atomic(Integer | Long ...)類或列表(這真的很糟糕,因爲列表可以包含多個對象)。或者,我可以創建其持有的對象,並允許改變對象的類:是否存在Java「引用對象」?
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共同的項目)?如果沒有,那麼對於這些問題還有其他解決方案嗎?