Ich habe drei Java8 Optionals und möchte dasjenige zurückgeben, das tatsächlich in einer bevorzugten Reihenfolge vorhanden ist. Es scheint, wie es sollte eine einfache Möglichkeit, sie zu ketten wie so:Drei mögliche Java8 Optionale Werte - Wie kann ich sauber zurückgeben, was auch immer vorhanden ist?
return optionalA.orElseIfPresent(optionalB).orElseIfPresent(optionalC);
, wenn alle drei leer sind, dann wird ein Optional.empty()
sollte zurückgegeben werden.
Die vorhandene orElse und orElseGet sind nicht wirklich die Aufgabe - sie müssen einen tatsächlichen Wert zurückgeben, so dass die restlichen Fallbacks nicht selbst Optionals sein können.
Im schlimmsten Fall kann ich eine lange Liste von ifPresent() Prüfungen haben, aber es scheint nur, als gäbe es einen besseren Weg?
Die Stream-Antwort könnte "hübscher" sein, aber diese Lösung ist einfacher und transparenter (und übrigens effizienter.) –