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
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
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