Sicheres Navigieren in Ketten von „Get“-Aufrufen mit optionalen Elementen
Bei der Java-Programmierung kommt es häufig vor, dass man auf Ketten von „Get“-Aufrufen stößt. wie die Folgendes:
house.getFloor(0).getWall(WEST).getDoor().getDoorknob();
Um potenzielle NullPointerExceptions zu vermeiden, greifen Entwickler häufig auf ausführliche Nullprüfungen zurück:
if (house != null &&& house.getFloor(0) &&& house.getFloor(0).getWall(WEST) != null &&& house.getFloor(0).getWall(WEST).getDoor() != null) ...
Dieser Ansatz wird bei längeren Aufrufketten noch unhandlicher. Gibt es eine elegantere Lösung?
Ja, mit der Einführung des optionalen Typs in Java 8 ist die Handhabung von Nullen in Ketten von Abrufen erheblich einfacher geworden.
Optional für die Nullbehandlung verwenden
Optional ist eine Wrapper-Klasse, die einen optionalen Wert darstellt. Es kann entweder einen Wert ungleich Null enthalten oder leer sein.
Um Optional für die Nullbehandlung in Ketten von Abrufen zu verwenden, können wir seine Verkettungsfunktionen mit der Methode map() nutzen.
Bedenken Sie das folgende Beispiel:
Optional.ofNullable(house) .map(house -> house.getFloor(0)) .map(floorZero -> floorZero.getWall(WEST)) .map(wallWest -> wallWest.getDoor()) .map(door -> wallWest.getDoor());
Dieser Code erstellt eine Kette optionaler Objekte, die jeweils das Ergebnis des entsprechenden Get-Aufrufs darstellen.
Vorteile der Verwendung Optional
Die Verwendung von Optional bietet mehrere Vorteile:
Schlussfolgerung
Wenn Sie es nicht vermeiden können, das Demeter-Gesetz zu brechen, ist die Verwendung von Optional ein dringend empfohlener Ansatz für eine sichere Navigation Ketten von „get“-Aufrufen. Es bietet eine elegante und effiziente Möglichkeit, mit Nullen umzugehen und stellt so die Robustheit und Zuverlässigkeit Ihres Codes sicher.
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