„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > ## Sind optionale Ketten der Schlüssel zur Eliminierung von NullPointerExceptions in verketteten „Get“-Aufrufen?

## Sind optionale Ketten der Schlüssel zur Eliminierung von NullPointerExceptions in verketteten „Get“-Aufrufen?

Veröffentlicht am 15.11.2024
Durchsuche:356

## Are Optional Chains the Key to Eliminating NullPointerExceptions in Chained \

Sicheres Navigieren in Ketten nullanfälliger „Get“-Aufrufe

In komplexen Codebasen kann die Verkettung mehrerer „Get“-Aufrufe zum Nährboden werden für NullPointerExceptions. Um sich vor potenziellen Nullwerten zu schützen, greifen Entwickler häufig auf ausführliche Nullprüfungen für jedes Zwischenobjekt zurück.

Aber gibt es eine elegantere und effizientere Möglichkeit, mit solchen Szenarien umzugehen?

Optionale Ketten

Mit der optionalen Klasse von Java 8 haben wir eine elegante Lösung, die als optionale Ketten bekannt ist. Durch optionales Umschließen können wir Nullen elegant verarbeiten, indem wir einen Optional-Wert anstelle eines rohen T zurückgeben.

Mit optionalen Ketten können Sie nahtlos eine Reihe von Get-Aufrufen ausführen und jeden einem optionalen Wert zuordnen. Nullprüfungen werden intern durchgeführt, um sicherzustellen, dass nachfolgende Vorgänge nur dann ausgeführt werden, wenn die vorherigen Nicht-Null-Werte zurückgeben.

Betrachten Sie beispielsweise die folgende Kette von „get“-Aufrufen:

house. getFloor(0).getWall(WEST).getDoor().getDoorknob();

Um NullPointerExceptions zu vermeiden, können Sie die folgende Null verwenden prüft:

if (house != null && house.getFloor(0) != null && house.getFloor(0).getWall(WEST) != null && house.getFloor(0).getWall(WEST).getDoor() != null) ...

Mit optionalen Ketten können Sie dies jedoch vereinfachen zu:

Optional.ofNullable(house)
    .map(h -> h.getFloor(0))
    .map(floor -> floor.getWall(WEST))
    .map(wall -> wall.getDoor())
    .map(door -> door.getDoorknob());

Beispielverwendung

Lassen Sie uns die Leistungsfähigkeit optionaler Ketten anhand eines Beispiels veranschaulichen:

System.out.println("----- Not Initialized! -----");

Optional.ofNullable(new Outer())
    ... // Omitted chain of optional maps
    .ifPresent(foo -> System.out.println("foo: "   foo)); //no print

System.out.println("----- Let's Initialize! -----");

Optional.ofNullable(new OuterInit())
    ... // Omitted chain of optional maps
    .ifPresent(foo -> System.out.println("foo: "   foo)); //will print!

In diesem Beispiel verarbeitet die optionale Kette bei der Initialisierung von Objekten ordnungsgemäß Nullen, was zu einem erfolgreichen Druck führt. Ohne optionale Ketten wäre eine NullPointerException aufgetreten.

Optionale Ketten vereinfachen nicht nur die Nullbehandlung, sondern verbessern auch die Lesbarkeit und Wartbarkeit des Codes. Durch die Nutzung von Optional können Sie sicher durch Ketten von „get“-Aufrufen navigieren, wodurch die Belastung durch explizite Nullprüfungen reduziert und die allgemeine Robustheit Ihrer Codebasis verbessert wird.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3