Prendi i due esempi di codice:
if(optional.isPresent()) {
//do your thing
}
if(variable != null) {
//do your thing
}
Per quanto ne so, la differenza più ovvia è che l'Opzionale richiede la creazione di un oggetto aggiuntivo.
Tuttavia, molte persone hanno iniziato rapidamente ad adottare Optionals. Qual è il vantaggio dell'utilizzo degli optionals rispetto a un controllo null?
if
dichiarazioni sono tremendamente lo scorso decennio e tutti usano astrazioni di monade e lambda ora.
if(x.isPresent) fails_on_null(x.get)
te esci dal sistema dei tipi e devi mantenere la garanzia che il codice non si spezzerà "nella tua testa" sulla distanza (dichiaratamente breve) tra la condizione e la chiamata di funzione. Nel optional.ifPresent(fails_on_null)
sistema dei tipi questa garanzia è per te e non devi preoccuparti.
Optional.ifPresent
(e in vari altri costrutti Java) è che puoi solo modificare le variabili finali in modo efficace e non generare eccezioni verificate. Questo è un motivo sufficiente per evitare spesso ifPresent
, sfortunatamente.