Java 8 ha un numero di classi facoltative, come OptionalDouble
, OptionalInt
, OptionalLong
.Operazioni su Java 8 Valori facoltativi *.
C'è un modo piacevole di operare con valori Opzionali dello stesso tipo? Cioè, mi piacerebbe essere in grado di fare:
OptionalDouble d1 = OptionalDouble.of(1.);
OptionalDouble d2 = OptionalDouble.of(2.);
OptionalDouble d3 = OptionalDouble.of(3.);
OptionalDouble result = d1.add(d2).multiply(d3);
E, naturalmente, se qualcuno di loro sono "vuoto" il risultato dovrebbe essere vuoto. Dopo aver cercato su google un po 'ho trovato alcuni esempi di codice in cui le persone utilizzano tali funzioni (ad esempio add
) ma non fa parte dell'API (più?).
'Opzionale # Map' sembra aver bisogno di un' Function', non un 'BinaryOperator', quindi funzionerebbe solo con funzioni che operano su un valore, non cose come' add' o 'multiply'. – ajb
Ho usato un metodo di supporto ma non capisco il motivo per cui hanno omesso questi metodi, o almeno la possibilità di aggiungerli.Si noti che le classi 'Optional' per primitive come' OptionalDouble' sono 'final' quindi non possono essere estese. – siki
@siki Sono finali perché gli optionals sono classi immutabili e quindi non dovrebbero mai essere estesi, poiché non è più possibile garantire l'immutabilità se un metodo accetta come parametro "OptionalDouble". – skiwi