有什么方法可以更新JVM堆中每个对象的引用?

时间:2019-01-22 23:49:33

标签: java jvm

假设我有以下代码:


    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。此时,正如预期的那样,ab“指向”不同的Main.fooa指向Main.foo和{{1}的先前版本}指向b的最新版本。

尽管代码按预期运行,但我想每次修改Main.foo时自动更新ab的引用。即,每次修改静态变量Main.foo时,必须更新变量Main.fooa的引用并指向最新值。

请注意,我无法控制源代码。因此,任何建议的解决方案都可能需要字节码检测或不需要任何对源代码进行任何更改的任何其他解决方案。

b类的toAddress/fromAddress之类的东西值得探索吗?我是否需要更深入地使用Java本机接口(JNI)?或者,也许我需要检测代码并实现类似proxy patternobserver pattern之类的东西?

谢谢。

0 个答案:

没有答案