Перехватчик записи поля

Я изучаю Byte Buddy и пытаюсь заменить CGLib на него. Я хочу знать, есть ли способ реализовать перехват записи в любое поле. Я не знаю тип поля и не хочу изменять назначенное значение. Я только хочу войти field written!в любой доступ.

Пример: если у меня есть этот класс:

public class Ex {
    public int i;
    public String s;
    public boolean b;
}

позже, когда я это сделаю:

Ex e = new Ex();
e.i=1;
System.out.println("Value of i:" + i);
e.s="hello";
System.out.println("Value of s:" + hello);

он должен вывести наружу:

field written!
Value of i: 1
field writed!
Value of s: hello

На странице справки В разделе Пользовательское инструментирование есть пример, но он не ясен.

1 ответ

  1. Нет, это невозможно. Это то, что вы делали с помощью cglib? Потому что это невозможно ни с помощью Byte Buddy, ни с помощью cglib .

    Проблема в том, что поле не отправляется динамически. Вместо переопределения класса, содержащего поле, необходимо переопределить любой класс, имеющий доступ к полю, который близок к невозможному.