Heim >Java >javaLernprogramm >Optionale Klasse in Java 8: So verwenden Sie die flatMap()-Methode, um mehrere Ebenen verschachtelter möglicherweise Nullwerte zu verarbeiten

Optionale Klasse in Java 8: So verwenden Sie die flatMap()-Methode, um mehrere Ebenen verschachtelter möglicherweise Nullwerte zu verarbeiten

王林
王林Original
2023-07-31 22:33:321568Durchsuche

Optionale Klasse in Java 8: So verwenden Sie die flatMap()-Methode, um mehrere Ebenen verschachtelter möglicherweise Nullwerte zu verarbeiten

Einführung:
In der Softwareentwicklung stoßen wir häufig auf Situationen, in denen wir mit möglicherweise Nullwerten zu tun haben. Früher hätten wir möglicherweise eine if-else-Anweisung verwendet, um zu prüfen, ob ein Objekt leer war, aber dieser Ansatz war ausführlich und fehleranfällig. Mit Java 8 wurde die Klasse Optional eingeführt, bei der es sich um ein Containerobjekt handelt, das optionale Nicht-Null-Werte enthalten kann. Verwenden Sie die optionale Klasse, um potenzielle Nullwerte prägnanter und sicherer zu verarbeiten.

Grundlegende Verwendung der optionalen Klasse:
Lassen Sie uns zunächst die grundlegende Verwendung der optionalen Klasse verstehen. Die optionale Klasse stellt eine Reihe von Methoden bereit, um festzustellen, ob ein Wert vorhanden ist und wie der Wert abgerufen werden kann, falls er vorhanden ist. Hier sind einige häufig verwendete Methoden:

  • ofNullable(T-Wert): Erstellen Sie ein optionales Objekt. Wenn der angegebene Wert null ist, wird ein leeres optionales Objekt zurückgegeben. Andernfalls wird ein optionales Objekt zurückgegeben, das den bereitgestellten Wert enthält.
  • isPresent(): Bestimmen Sie, ob das optionale Objekt einen Wert enthält.
  • get(): Ruft den Wert im optionalen Objekt ab. Voraussetzung ist, dass wir sicher sind, dass das optionale Objekt einen Wert enthält, andernfalls wird eine NoSuchElementException-Ausnahme ausgelöst.
  • ifPresent(Consumer117c5a0bdb71ea9a9d0c2b99b03abe3e Consumer): Bestimmen Sie, ob das optionale Objekt einen Wert enthält. Wenn dies der Fall ist, führen Sie den übergebenen Consumer aus, andernfalls wird er nicht ausgeführt.
  • orElse(T other): Bestimmen Sie, ob das optionale Objekt einen Wert enthält. Wenn ja, geben Sie den Wert zurück, andernfalls geben Sie den übergebenen anderen Wert zurück.

Die oben genannten Methoden reichen aus, um einfache Situationen zu bewältigen. Wenn wir jedoch mit mehreren Ebenen verschachtelter möglicherweise Nullwerte arbeiten, müssen wir möglicherweise die Methode flatMap() verwenden.

Verwendung der flatMap()-Methode:
flatMap()-Methode ermöglicht es uns, ein anderes optionales Objekt in ein optionales Objekt umzuwandeln. Insbesondere wenn wir den Wert eines optionalen Objekts verarbeiten und ein optionales Objekt zurückgeben möchten, können wir die Methode flatMap() verwenden. Das Folgende ist die Signatur der flatMap()-Methode:

public <U> Optional<U> flatMap(Function<? super T, Optional<U>> mapper)

Unter diesen ist Mapper eine Funktionsschnittstelle (Funktion), die einen Wert als Parameter akzeptiert und ein optionales Objekt zurückgibt. Die Methode flatMap() reduziert das zurückgegebene optionale Objekt und gibt schließlich ein optionales Objekt zurück, das nicht mehr verschachtelt ist.

Im Folgenden wird anhand eines Beispiels die Verwendung der flatMap()-Methode demonstriert.

Beispielcode:
Angenommen, wir haben eine Order-Klasse, die eine getCustomer()-Methode hat, die ein optionales Objekt zurückgibt, die Customer-Klasse hat auch eine getAddress()-Methode, die ein optionales Objekt zurückgibt, und die Address-Klasse hat eine getCity( )-Methode, die einen Wert vom Typ String zurückgibt.

public class Order {
    private Optional<Customer> customer;

    public Optional<Customer> getCustomer() {
        return customer;
    }
}
public class Customer {
    private Optional<Address> address;

    public Optional<Address> getAddress() {
        return address;
    }
}
public class Address {
    private String city;

    public String getCity() {
        return city;
    }
}

Jetzt müssen wir den Stadtnamen in einem Order-Objekt abrufen. Wir können mehrere Ebenen verschachtelter if-else-Anweisungen verwenden, um diese Situation zu bewältigen, aber die Verwendung der flatMap()-Methode kann den Code prägnanter und eleganter machen.

Order order = new Order();
Optional<String> city = order.getCustomer()
        .flatMap(Customer::getAddress)
        .map(Address::getCity);

Im obigen Code erhalten wir zunächst ein optionales Objekt über order.getCustomer() und verwenden dann die Methode flatMap(), um ein optionales Objekt zu erhalten, das ein Adressobjekt enthält. Als nächstes rufen wir die Methode „map()“ auf, um den Namen der Stadt im Objekt „Adresse“ abzurufen und schließlich ein optionales f7e83be87db5cd2d9a8a0b8117b38cd4-Objekt abzurufen.

Fazit:
Die optionale Klasse in Java 8 bietet uns eine präzisere, sicherere und elegantere Möglichkeit, mit möglicherweise Nullwerten umzugehen. Durch die Verwendung der flatMap()-Methode können wir mehrere Ebenen verschachtelter möglicherweise Nullwerte einfacher verarbeiten. Ich empfehle jedem, optionale Klassen in seinem Code zu verwenden, um die Lesbarkeit und Robustheit des Codes zu verbessern.

Das obige ist der detaillierte Inhalt vonOptionale Klasse in Java 8: So verwenden Sie die flatMap()-Methode, um mehrere Ebenen verschachtelter möglicherweise Nullwerte zu verarbeiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn