Java 8 Optional-Klasse
Die Optional-Klasse ist ein Containerobjekt, das null sein kann. Wenn der Wert vorhanden ist, gibt die Methode isPresent() true zurück, und der Aufruf der Methode get() liefert das Objekt zurück.
Optional ist ein Container: Er kann einen Wert vom Typ T oder einfach null enthalten. Optional bietet viele nützliche Methoden, sodass wir keine expliziten Nullwertprüfungen durchführen müssen.
Die Einführung der Optional-Klasse behebt die NullPointerException effektiv.
Klassendeklaration
Das Folgende ist einejava.util.Optional<T>-Klassendeklaration:
Klassenmethoden
| Laufende Nummer | Methode & Beschreibung |
|---|---|
| 1 | static <T> Optional<T> empty()
Gibt eine leere Optional-Instanz zurück. |
| 2 | boolean equals(Object obj)
Bestimmt, ob ein anderes Objekt gleich dem Optional ist. |
| 3 | Optional<T> filter(Predicate<? super <T> predicate)
Wenn der Wert vorhanden ist und mit dem angegebenen Predicate übereinstimmt, wird ein Optional zurückgegeben, das diesen Wert beschreibt; andernfalls wird ein leeres Optional zurückgegeben. |
| 4 | <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)
Wenn ein Wert vorhanden ist, wird der Wert basierend auf der im Optional enthaltenen Mapping-Methode zurückgegeben; andernfalls wird ein leeres Optional zurückgegeben. |
| 5 | T get()
Wenn der Wert in diesem Optional enthalten ist, wird der Wert zurückgegeben; andernfalls wird eine Ausnahme ausgelöst: NoSuchElementException |
| 6 | int hashCode()
Gibt den Hashcode des vorhandenen Werts zurück oder 0, wenn der Wert nicht vorhanden ist. |
| 7 | void ifPresent(Consumer<? super T> consumer)
Wenn ein Wert vorhanden ist, wird der Consumer mit dem Wert aufgerufen; andernfalls wird nichts getan. |
| 8 | boolean isPresent()
Die Methode gibt true zurück, wenn der Wert vorhanden ist, andernfalls gibt sie false zurück. |
| 9 | <U>Optional<U> map(Function<? super T,? extends U> mapper)
Wenn ein Wert vorhanden ist, wird die Mapping-Funktion darauf angewendet und der Rückgabewert ermittelt. Wenn der Rückgabewert nicht null ist, wird ein Optional erstellt, das den gemappten Rückgabewert als Rückgabewert der map-Methode enthält; andernfalls wird ein leeres Optional zurückgegeben. |
| 10 | static <T> Optional<T> of(T value)
Gibt ein Optional mit dem angegebenen Nicht-Null-Wert zurück. |
| 11 | static <T> Optional<T> ofNullable(T value)
Wenn der Wert nicht null ist, wird ein Optional zurückgegeben, das den angegebenen Wert beschreibt; andernfalls wird ein leeres Optional zurückgegeben. |
| 12 | T orElse(T other)
Wenn der Wert vorhanden ist, wird der Wert zurückgegeben; andernfalls wird other zurückgegeben. |
| 13 | T orElseGet(Supplier<? extends T> other)
Wenn der Wert vorhanden ist, wird der Wert zurückgegeben; andernfalls wird other aufgerufen und das Ergebnis dieses Aufrufs zurückgegeben. |
| 14 | <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)
Wenn der Wert vorhanden ist, wird der enthaltene Wert zurückgegeben; andernfalls wird eine vom Supplier bereitgestellte Ausnahme ausgelöst. |
| 15 | String toString()
Gibt eine Zeichenkette des Optional zurück, die nicht null ist und zum Debuggen verwendet wird. |
Hinweis:Diese Methoden werden von der Klassejava.lang.Objectgeerbt.
Optional-Instanz
Anhand der folgenden Beispiele können wir die Verwendung der Optional-Klasse besser verstehen:
Java8Tester.java-Datei
Die Ausführung des obigen Skripts erzeugt die folgende Ausgabe:
$ javac Java8Tester.java $ java Java8Tester 第一个参数值存在: false 第二个参数值存在: true 10
Andere Erweiterungen
Neue Funktionen in Java 8