JavaFX: Erstellen Eigenschaften Effizienter

Die erweiterten Funktionen von JavaFX Eigenschaften kommen nicht ohne Kosten. Insbesondere braucht Zeit, mehr Speicher und Verarbeitung eine Eigenschaft Objekt zu erhalten, als ein einfaches feldbasierte Eigenschaft zu schaffen. Und in vielen Klassen werden die erweiterten Funktionen eines JavaFX-Property-Objekt nur gelegentlich benötigt. Dies ist das Instanzieren Immobilienobjekte für jede Eigenschaft in einer Klasse, ob das Objekt erforderlich ist oder nicht, ist verschwenderisch.

Hier ist eine Technik für die Erstellung von Eigenschaften in dem die unbewegliche Objekte selbst sind nicht instanziert, bis die Eigenschaftenaccessor selbst genannt wird. Auf diese Weise wird die Eigenschaft Objekt nicht erstellt, wenn sie tatsächlich benötigt wird. Hier sind die Details dieser Technik:

  1. Deklarieren Sie ein privates Feld die Daten durch die Eigenschaft vertreten zu halten.

    Zum Beispiel für eine String-Eigenschaft, erstellen Sie ein Schnur Variable. Für den Variablennamen, verwenden Sie den Namen der Eigenschaft durch einen Unterstrich voran, wie folgt aus:

    Private final String _firstName = "" -
  2. Erstellen Sie, aber nicht instanziiert, eine private Variable die Eigenschaft Objekt darzustellen.

    Mit anderen Worten, erklären die Variable aber nicht die Klasse Konstruktor aufrufen:

    Privat letzte SimpleStringProperty firstName-
  3. Erstellen Sie die Getter.

    In der Getter, verwenden ein ob Anweisung, um zu bestimmen, ob das Eigenschaftsobjekt existiert. Ist dies der Fall, stellen Sie den Wert aus der Eigenschaft. Wenn dies nicht geschieht, gibt den Wert des privaten Bereich. Beispielsweise:

    public final String getFirstName () {if (vorName == null) return _firstName-elsereturn firstName.get () -}
  4. Erstellen Sie die Setter.

    Verwenden Sie die gleiche Technik, die in der Setter:

    public final nichtig setFirstName (String value) {if (vorName == null) _firstName = value-elsefirstName.set (Wert) -}
  5. Erstellen Sie die Eigenschaftenaccessor.

    Bei dieser Methode überprüfen, zuerst, ob die Eigenschaft Objekt vorhanden ist, und erstellen Sie das Objekt, wenn es nicht existiert. Verwenden Sie den Wert des privaten Bereich als Anfangswert der Immobilie. Dann schicken Sie das Objekt:

public final String firstNameProperty () {if (vorName == null) vorName = new SimpleStringProperty (this, "vorName", _firstName) -return firstName-}

Hier ist, wie es zusammen in einer Klasse setzen sieht benannt Kunde:

Öffentliche Klasse Kunden {private final String _firstName = "" -privater letzte SimpleStringProperty vorName-public final String getFirstName () {if (vorName == null) return _firstName-elsereturn firstName.get () -} public final nichtig setFirstName (String value) {if (vorName == null) _firstName = value-elsefirstName.set (Wert) -} public final String firstNameProperty () {if (vorName == null) vorName = new SimpleStringProperty (this, "vorName", _firstName) -return vorName -}}

Menü