Java 8 verfügt über eine Reihe optionaler Klassen, z. B. OptionalDouble
, OptionalInt
, OptionalLong
.Operationen auf Java 8 Optionale * Werte.
Gibt es eine gute Möglichkeit, mit optionalen Werten der gleichen Art zu arbeiten? Das heißt, würde Ich mag Lage sein, zu tun: Kurs
OptionalDouble d1 = OptionalDouble.of(1.);
OptionalDouble d2 = OptionalDouble.of(2.);
OptionalDouble d3 = OptionalDouble.of(3.);
OptionalDouble result = d1.add(d2).multiply(d3);
Und wenn einer von ihnen „leer“ ist das Ergebnis sollte leer sein. Nachdem ich etwas gegoogelt habe, habe ich ein paar Codebeispiele gefunden, in denen Leute diese Funktionen verwenden (z. B. add
), aber es ist nicht der Teil der API (mehr?).
'Optionale # Map' scheint eine' Funktion' zu benötigen, nicht einen 'BinaryOperator', also würde sie nur mit Funktionen funktionieren, die auf einen Wert wirken, nicht auf Dinge wie' add' oder 'multiply'. – ajb
Ich habe eine Hilfsmethode verwendet, aber ich verstehe nicht wirklich den Grund, warum sie diese Methoden weggelassen haben, oder zumindest die Fähigkeit, sie hinzuzufügen.Beachten Sie, dass die 'Optional' Klassen für Primitive wie' OptionalDouble' 'final' sind, so dass sie nicht einmal erweitert werden können. – siki
@siki Sie sind endgültig, da Optionals unveränderliche Klassen sind und daher niemals erweitert werden sollten, da Sie keine Unveränderlichkeit mehr garantieren können, wenn eine Methode einen 'OptionalDouble' als Parameter akzeptiert. – skiwi