Heim >Java >javaLernprogramm >## 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?

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 02:29:02730Durchsuche

## 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 ein optionales zurückgeben. Wert anstelle eines rohen T.

Optionale Ketten ermöglichen es Ihnen, nahtlos eine Reihe von Get-Aufrufen auszuführen und jeden einem optionalen Wert zuzuordnen. 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 folgenden Nullprüfungen verwenden:

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

Allerdings mit optionalen Ketten , können Sie dies wie folgt vereinfachen:

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.

Das obige ist der detaillierte Inhalt von## Sind optionale Ketten der Schlüssel zur Eliminierung von NullPointerExceptions in verketteten „Get'-Aufrufen?. 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