If you add an InvalidationListener to a binding created using Bindings.select(), the respective listener is only called upon the first change to the respective nested property.
Bindings.<String>select(person.addressProperty(), "street").addListener(invalidationListener);
If you use a ChangeListener instead, it works fine.
If you use a regular binding with an InvalidationListener, it also works fine.
Even if you add a ChangeListener to the same Binding object you bound your InvalidationListener to, the InvalidationListener suddenly starts to work as well.
Bindings.<String>select(person.addressProperty(), "street").addListener(invalidationListener);
If you use a ChangeListener instead, it works fine.
If you use a regular binding with an InvalidationListener, it also works fine.
Even if you add a ChangeListener to the same Binding object you bound your InvalidationListener to, the InvalidationListener suddenly starts to work as well.