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 クラスのプロパティに似た、フィールド アクセス用の疑似メソッドはありますか?