有时我想将不可变对象传递给方法,并在方法内部更改其值,或者我想将另一个对象分配给参数引用(示例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共同的项目)?如果没有,那么对于这些问题还有其他解决方案吗?