Ola,
Em java temos um padrão para isto, mas não lembro o nome agora, sei que funciona assim, a classe, bean no caso, tem que “suportar” notificar quando o valor de um atributo é alterado, sendo que é legal vc declarar uma constante que contem o nome do atributo, este “suporte” já é fornecido pela classe java.beans.PropertyChangeSupport.
public class A{
public static final String PROPERTY_NAME_A = "A.a";
private Object a;
private PropertyChangeSupport propertyChangeSupport;
.. // no construtor vc pode iniciar o propertyChangeSupport, ou em outro lugar qq...
public void addPropertyChangeListener(PropertyChangeListener l){
this.propertyChangeSupport.addPropertyChangeListener(l);
}
public void setA(Object newA){
Object oldA = this.a;
this.a = newA;
propertyChangeSupport.firePropertyChange(PROPERTY_NAME_A, oldA, this.a);
}
...
}
Bom, vejamos, criamos um bean com 1 atributo, o ‘a’, e criamos uma constante com o nome dele, a ‘PROPERTY_NAME_A’, no setA a gente notifica que o ‘a’ nodou, mas quem vai "escutar’??? são os java.beans.PropertyChangeListener, que no caso da sua pergunta seria a classe B…
Ps.: note que no metodo "setA’, em primeiro eu atualiza o valor de ‘a’ para só depois eu notificar, isto faz parte do padrão, pois assim se o lsitener fizer um “getA” por exemplo, ele vai recuperar sempre o valor atual.