Guave Teammitglied hier.
Der wahrscheinlich größte Nachteil nullist, dass es nicht offensichtlich ist, was es in einem bestimmten Kontext bedeuten sollte: Es hat keinen illustrativen Namen. Es ist nicht immer offensichtlich, dass nulldies "kein Wert für diesen Parameter" bedeutet - zum Teufel, als Rückgabewert bedeutet es manchmal "Fehler" oder sogar "Erfolg" (!!) oder einfach "die richtige Antwort ist nichts". Optionalist häufig das Konzept, das Sie tatsächlich meinen, wenn Sie eine Variable auf Null setzen, aber nicht immer. Wenn dies nicht der Fall ist, empfehlen wir Ihnen, eine eigene Klasse zu schreiben, ähnlich wie, Optionaljedoch mit einem anderen Namensschema, um zu verdeutlichen, was Sie tatsächlich meinen.
Aber ich würde sagen, der größte Vorteil Optionalliegt nicht in der Lesbarkeit: Der Vorteil ist die Idiotensicherheit. Es zwingt Sie, aktiv über den fehlenden Fall nachzudenken, wenn Sie möchten, dass Ihr Programm überhaupt kompiliert wird, da Sie den OptionalFall aktiv auspacken und ansprechen müssen. Null macht es beunruhigend einfach, Dinge einfach zu vergessen, und obwohl FindBugs hilft, denke ich, dass es das Problem nicht annähernd so gut angeht. Dies ist besonders relevant, wenn Sie Werte zurückgeben, die möglicherweise "vorhanden" sind oder nicht. Es ist weitaus wahrscheinlicher, dass Sie (und andere) vergessen, dass other.method(a, b)ein nullWert azurückgegeben werden könnte, nullals dass Sie dies bei der Implementierung vergessen könnten other.method. RückkehrOptional macht es Anrufern unmöglich, diesen Fall zu vergessen, da sie das Objekt selbst auspacken müssen.
Aus diesen Gründen empfehlen wir, dass Sie Optionalals Rückgabetyp für Ihre Methoden verwenden, jedoch nicht unbedingt in Ihren Methodenargumenten.
(Dies ist übrigens völlig aus der Diskussion hier gestrichen .)