Ответ не в том, чтобы публично раскрывать свои поля. Сделайте поля приватными, представьте методы getter и setter, и вы можете вызывать все что угодно внутри setter, если значение изменилось.
public class Example {
private String var1 = "Something";
public String getVar1() {
return var1;
}
public void setVar1(String var1) {
// TODO: null guards
if (var1.equals(this.var1)) {
// No-op - no need to do anything
return;
}
this.var1 = var1;
notifyListenersOfChangeToVar1();
}
}