假设我有以下代码:
public class Main {
public static String foo;
public static void main(String[] args) {
Main.foo = new String("a");
String a = Main.foo;
Main.foo = new String("b");
// TODO update a's reference
String b = Main.foo;
}
}
用foo
实例化一个名为new String("a");
的静态变量,然后将其分配给变量a
。然后,它用foo
重新初始化new String("b");
并将其分配给变量b
。此时,正如预期的那样,a
和b
“指向”不同的Main.foo
:a
指向Main.foo
和{{1}的先前版本}指向b
的最新版本。
尽管代码按预期运行,但我想每次修改Main.foo
时自动更新a
和b
的引用。即,每次修改静态变量Main.foo
时,必须更新变量Main.foo
和a
的引用并指向最新值。
请注意,我无法控制源代码。因此,任何建议的解决方案都可能需要字节码检测或不需要任何对源代码进行任何更改的任何其他解决方案。
b
类的toAddress/fromAddress
之类的东西值得探索吗?我是否需要更深入地使用Java本机接口(JNI)?或者,也许我需要检测代码并实现类似proxy pattern或observer pattern之类的东西?
谢谢。