Ich möchte die fließende API von Optional
verwenden und zwei Consumer
s darauf anwenden.Wie sieht man auf ein Optional?
Ich träume über das so etwas wie:
Optional.ofNullable(key)
.map(Person::get)
.ifPresent(this::printName)
.ifPresent(this::printAddress); // not compiling, because ifPresent is void
Wie bewerbe ich mehr Consumer
s zu einem Optional
, ohne es in einer temporären Variablen speichern zu müssen?
Während dies funktioniert, ich glaube nicht, 'map' für Nebenwirkungen verwendet, ist guter Stil. Persönlich würde ich lieber mit 'ifPresent (x -> {doA (x); doB (x);})' –
@RobinTopper Leute manchmal tun, weil sie versucht haben, eine Antwort auf ihre Frage selbst zu finden, aber haben es versäumt, einen zu finden, und sobald sie es herausgefunden haben, wollen sie sicherstellen, dass der nächste Sucher tatsächlich die Antwort findet. – Esko
Der Grund hier ist, dass Optional ist eigentlich eine träge ausgewertete Monade (_yes, in Java_) und nur nach der Frage nach dem endgültigen Wert der internen Pipeline verarbeitet wird - wenn es keinen Wert zu Beginn ist, wird Standardverhalten aufgerufen, die möglicherweise variieren je nachdem, welche Methode zum Erhalt des endgültigen Wertes aufgerufen wurde. – Esko