Ho il seguente problema. Diciamo che hai 2 Optional
variabiliSeparazione di più variabili opzionali in Java 8
Optional<Contact> c1 = ...
Optional<Contact> c2 = ...
e un metodo che ha bisogno di 2 variabili di tipo Contatto
void match(Contact c1, Contact c2) {...}
e avete bisogno di scartare sia C1 e C2 Optional
Vars e passarli al metodo match()
.
La mia domanda è "Qual è il modo più elegante per farlo in Java 8?"
Finora ho trovato 2 modi:
utilizzando isPresent
if (c1.isPresent() && c2.isPresent()) { match(c1.get(), c2.get()); }
utilizzando ifPresent nidificato
c1.ifPresent((Contact _c1) -> { c2.ifPresent((Contact _c2) -> { match(_c1, _c2); }); });
Entrambi i modi sono terribili secondo me ionico. In Scala posso farlo:
for {
contact1 <- c1
contact2 <- c2
} yield {
match(contact1, contact2);
}
c'è un modo in Java 8 per farlo più ordinato di quanto descritto sopra?
Che cosa vuoi fare se l'Opzionale non è presente?Ignora o fai un'eccezione? – Tunaki
L'opzione IMHO 1) è più chiara del codice Scala poiché ha meno magia. –
L'opzione 2 può essere scritta 'c1.ifPresent (_c1 -> c2.ifPresent (_c2 -> match (_c1, _c2)));' Inoltre, non è necessario creare blocchi. – Tunaki