Optional Geben Sie einen Nullwert zurückgibt

Habe ich eine Klasse wie dieses.

public class SomeClass {

  private Optional<String> testString;

  public SomeClass() { 
      populateFields();
  }

  public Optional<String> getTestString() {
      return testString;
  }

  private void populateFields() {
     if(//something is going false here){
       testString = functionThatReturnsOptionalString();
     }
  }

}

Nun instanceOfSomeClass.getTestString() null zurück. Ist nicht Optional immer enthalten soll, eine nicht-null-Wert oder leer sein? Ich bin versucht, oder vermeiden Sie die isNull() und benutzen Sie einfach isEmpty() in meinem Anrufer.

Wenn ich einen Haltepunkt auf die erste Zeile der populateFields() und prüfen Sie den Wert testString zu dieser Zeit, es zeigt den Wert als null. Bedeutung der Standardwert für dieses Feld(bevor Sie zugewiesen wird, nichts) ist null.

Bitte werfen Licht auf diese situation; und vielleicht die korrekte Verwendung von Optional?

Könnten Sie initialisieren die testString: private Optional<String> testString = new Optional...
Oder vielmehr, Sie mit der statischen factory-Methode: Optional.absent() wenn Sie mit Guave Optionen oder Optional.empty() für Java 8 Optionen.
Es ist keine Besondere Magie für Optional - es ist eine Klasse wie jede andere. Das bedeutet, dass der Standardwert für den Optionalen Referenzen (wie alle Referenzen) ist null.

InformationsquelleAutor Gadam | 2015-03-02

Schreibe einen Kommentar