Используя библиотеку, подобную ASM
или cglib
, есть ли способ добавить инструкции байт-кода в класс для выполнения кода всякий раз, когда установлено значение поля класса?
Например, допустим, у меня есть этот класс:
public class Person
{
bool dirty;
public String name;
public Date birthDate;
public double salary;
}
Допустим, часть кода содержит следующую строку:
person.name = "Joe";
Я хочу, чтобы эта инструкция была перехвачена, поэтому флаг dirty
установлен на true
. Я знаю, что это возможно для методов установки - person.setName (“Joe”)
- поскольку методы класса могут быть изменены с помощью манипулирования байт-кодом, но я хочу сделать то же самое для поля .
Возможно ли это, и если да, то как ?
EDIT
Я хочу избежать изменения секции кода, которая обращается к классу, я ищу способ сохранить код перехвата как часть класса Person
. Существуют ли псевдо-методы для доступа к полям, аналогичные свойствам в классах Python?