Nachdem ich Java 8 jetzt seit mehr als 6 Monaten verwende, bin ich ziemlich zufrieden mit den neuen API-Änderungen. Ein Bereich, in dem ich immer noch nicht sicher bin, ist der Zeitpunkt der Verwendung Optional. Ich scheine zwischen dem Wunsch, es überall zu verwenden, wo etwas sein mag null, und nirgendwo hin und her zu schwingen .
Es scheint viele Situationen zu geben, in denen ich es verwenden könnte, und ich bin mir nie sicher, ob es Vorteile bringt (Lesbarkeit / Nullsicherheit) oder nur zusätzlichen Aufwand verursacht.
Ich habe also ein paar Beispiele und würde mich für die Gedanken der Community interessieren, ob dies von OptionalVorteil ist.
1 - Als Rückgabetyp für öffentliche Methoden, wenn die Methode Folgendes zurückgeben könnte null:
public Optional<Foo> findFoo(String id);
2 - Als Methodenparameter, wenn der Parameter sein kann null:
public Foo doSomething(String id, Optional<Bar> barOptional);
3 - Als optionales Mitglied einer Bohne:
public class Book {
private List<Pages> pages;
private Optional<Index> index;
}
4 - In Collections:
Im Allgemeinen denke ich nicht:
List<Optional<Foo>>
fügt etwas hinzu - zumal man damit Werte usw. filter()entfernen kann null, aber gibt es Optionalin Sammlungen gute Verwendungsmöglichkeiten ?
Irgendwelche Fälle, die ich verpasst habe?
.filter(Optional::absent)"Nullwerte"
getOrDefault()?
Map<Character, String>. Wenn es keinen Ersatz gibt, kann ich dies verwenden :Optional.ofNullable(map.get(c)).orElse(String.valueOf(c)). Beachten Sie auch, dass Optional aus Guava gestohlen wurde und eine viel schönere Syntax hat:Optional.fromNullable(map.get(c)).or(String.valueOf(c));