Ich benutze Stream mit findFirst(), die optional zurückgibt, aber auch wenn mein Stream vielleicht gar nichts aussendet, so dass ich oder Operator unten anzeige.FindFirst- und orElse-Operatoren geben unterschiedliche Klassen zurück
Das Problem besteht darin, dass orElse nicht einen optionalen, sondern den Klassentyp zurückgibt, den der optionale Operator findFirst umbrochen hat.
def optional = categories.categories.stream()
.filter { category -> category.name == selCategory }
.map { category -> loadUniqueIds.call(category) }
.map { UUIDs -> new JsonArray(UUIDs) }
.findFirst().orElse{Optional.of(new JsonArray())}
optional.get()
Also ich am Ende ohne die Möglichkeit der Verwendung findFirst und orElse.
Was mache ich hier falsch?
Dank
UPDATE:
ich die OrElse nach dem findfirst Entfernen am Ende und überprüfen Sie die später optional
optional.isPresent() ? optional.get(): new JsonArray()
Wie dem auch sei, wenn jemand eine bessere/elegantere Lösung hat, lassen Sie es mich wissen .
Grüße.
Was soll 'def optional' in Java sein? – khelwood
Das ist groovy, aber ich benutze Java 8 stream – paul