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