使用类似ASM
or的库cglib
,有没有办法在设置类字段的值时向类添加字节码指令以执行代码?
例如,假设我有这个类:
public class Person
{
bool dirty;
public String name;
public Date birthDate;
public double salary;
}
假设一段代码包含这一行:
person.name = "Joe";
我希望截获这条指令,以便将dirty
标志设置为true
. 我知道这对于 setter 方法是可能的person.setName (“Joe”)
——因为类方法可以通过字节码操作来修改,但我想对字段做同样的事情。
这可能吗,如果可以,怎么做?
编辑
我想避免修改访问类的代码部分,我正在寻找一种方法将拦截代码保留为Person
类的一部分。是否有用于字段访问的伪方法,类似于 Python 类中的属性?