Wie funktioniert der JavaBeans-Eigenschaftsadapter?

Was ich versuche zu tun, funktioniert einwandfrei, wenn ich der beschriebenen JavaFX-Eigenschaftsdefinition folgeHier. Stattdessen möchte ich jetzt Eigenschaften aus Java Beans-Objekten mithilfe des Java Beans-Eigenschaftsadapters definieren. Da es keine Dokumentation gibt, kann ich nicht herausfinden, wie es funktioniert.

Angenommen, ich habe eine einfache POJO-Klasse:

public class Person {
    private String name;

    public String getName() {
        return name;
    }

    public void setName( String name ) {
        this.name = name;
    }
}

und eine PersonProperty:

public class PersonProperty {
    private Person person = new Person();

    private JavaBeanStringProperty name;

    public PersonProperty() throws NoSuchMethodException {
        name = JavaBeanStringPropertyBuilder.create().bean( person ).name( "name" ).build();
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson( Person person ) {
        this.person = person;
    }

    public JavaBeanStringProperty nameProperty() {
        return name;
    }
}

und zum schluss ein test:

public void personTest() throws NoSuchMethodException {
    PersonProperty pp = new PersonProperty();

    pp.getPerson().setName( "A" );
    pp.getPerson().setName( "B" );

    pp.nameProperty().addListener( new ChangeListener<String>() {
        @Override
        public void changed( ObservableValue<? extends String> ov, String t, String t1 ) {
            System.out.println( "from " + t + " to " + t1 );
        }
    } );

    pp.getPerson().setName( "C" );
    pp.getPerson().setName( "D" );
}

Ich erwarte zu sehen:

from B to C
from C to D

Stattdessen erscheint nichts.

Wenn ich hinzufügepp.nameProperty().set("E") Am Ende des Personentests bekomme ichfrom B to E

Antworten auf die Frage(1)

Ihre Antwort auf die Frage