ASMまたはのようなライブラリを使用して、cglibバイトコード命令をクラスに追加して、クラス フィールドの値が設定されるたびにコードを実行する方法はありますか?
たとえば、次のクラスがあるとします。
public class Person
{
bool dirty;
public String name;
public Date birthDate;
public double salary;
}
コードのセクションに次の行が含まれているとします。
person.name = "Joe";
dirtyフラグが に設定されるように、この命令をインターセプトする必要がありtrueます。クラスメソッドはバイトコード操作によって変更できるため、セッターメソッドでこれが可能であることはわかっていますが、フィールドperson.setName (“Joe”)に対しても同じことをしたいと考えています。
これは可能ですか?
編集
クラスにアクセスするコード セクションの変更を避けたいので、傍受コードをクラスの一部として保持する方法を探していPersonます。Python クラスのプロパティに似た、フィールド アクセス用の疑似メソッドはありますか?