Java 8 ma kilka klas opcjonalnych, takich jak OptionalDouble
, OptionalInt
, OptionalLong
.Operacje na Java 8 Opcjonalne * wartości.
Czy istnieje przyjemny sposób działania z Opcjonalnymi wartościami tego samego rodzaju? To znaczy, chciałbym móc:
OptionalDouble d1 = OptionalDouble.of(1.);
OptionalDouble d2 = OptionalDouble.of(2.);
OptionalDouble d3 = OptionalDouble.of(3.);
OptionalDouble result = d1.add(d2).multiply(d3);
I oczywiście, jeśli którykolwiek z nich jest "pusty", wynik powinien być pusty. Po przejściu przez trochę google znalazłem kilka próbek kodu, w których ludzie używają tych funkcji (np. add
), ale to nie jest część API (już?).
'Opcjonalne # mapa' wydaje się wymagać' funkcji', a nie 'BinaryOperator', więc działałoby tylko z funkcjami działającymi na jednej wartości, a nie takimi jak' add' czy 'multiply'. – ajb
Używam metody pomocnika, ale tak naprawdę nie rozumiem powodu, dla którego pominięto te metody lub przynajmniej możliwość ich dodania.Zwróć uwagę, że klasy "Opcjonalne" dla prymitywów takich jak 'OpcjonalneDouble' są' końcowe', więc nie można ich nawet rozszerzyć. – siki
@siki Są one ostateczne, ponieważ opcje są niezmiennymi klasami i dlatego nigdy nie powinny być przedłużane, ponieważ nie można zagwarantować niezmienności, a następnie, jeśli metoda przyjmuje parametr "OptionalDouble" jako. – skiwi