Manipulação de bytecode para interceptar a configuração do valor de um campo

Usando uma biblioteca comoASM oucglib, existe uma maneira de adicionar instruções de bytecode a uma classe para executar código sempre que o valor de um campo de classe for definido?

Por exemplo, digamos que eu tenho essa classe:


   public class Person
   {  
       bool dirty;
       public String name;
       public Date birthDate;
       public double salary;
   }

Digamos que uma seção de código contenha esta linha:

person.name = "Joe";

Eu quero que esta instrução seja interceptada para que odirty sinalizador está definido comotrue. Eu sei que isso é possível para métodos setter -person.setName (“Joe”) - como os métodos de classe podem ser modificados pela manipulação do bytecode, mas quero fazer o mesmo por umcampo.

Isso é possível? Se sim,quão?

EDITAR

Quero evitar modificar a seção de código que acessa a classe. Estou procurando uma maneira de manter o código de interceptação como parte doPerson classe. Existem pseudo-métodos para acesso ao campo, semelhantes às propriedades nas classes Python?

questionAnswers(2)

yourAnswerToTheQuestion