Предположим, у меня есть следующий код:
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
, а b
указывает на самую последнюю версию Main.foo
.
Хотя код работает, как и ожидалось, я хотел бы автоматически обновлять ссылку a
и b
каждый раз, когда Main.foo
изменяется.То есть каждый раз, когда статическая переменная Main.foo
изменяется, ссылка на переменные a
и b
должна обновляться и указывать на самое последнее значение.
Обратите внимание, что я не могу контролироватьисходный код.Следовательно, любое предлагаемое решение может включать в себя инструментарий байт-кода или любое другое решение, которое не требует каких-либо изменений в исходном коде.
Стоит ли изучать что-то вроде класса toAddress/fromAddress
из sun.misc.Unsafe
?Должен ли я пойти еще глубже и использовать Java Native Interface (JNI)?Или, может быть, мне понадобится код инструмента и реализовать что-то вроде прокси-шаблона или наблюдателя ?
Заранее спасибо.