Optional.orElseThrow() senza supplier
Usa Optional.orElseThrow() come alternativa più chiara e rivelante l'intento a get().
Confronto Codice
✕ Java 8
// Risky: get() throws if empty, no clear intent
String value = optional.get();
// Verbose: supplier just for NoSuchElementException
String value = optional
.orElseThrow(NoSuchElementException::new);
✓ Java 10+
// Clear intent: throws NoSuchElementException if empty String value = optional.orElseThrow();
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Auto-documentante
orElseThrow() segnala chiaramente che l'assenza è inaspettata.
Evita get()
Gli strumenti di analisi statica segnalano get() come rischioso; orElseThrow() è idiomatico.
Meno boilerplate
Non è necessario passare un supplier per il NoSuchElementException predefinito.
Approccio Vecchio
get() o orElseThrow(supplier)
Approccio Moderno
orElseThrow()
Dal JDK
10
Difficoltà
Principiante
Supporto JDK
Optional.orElseThrow() senza supplier
Disponibile
Disponibile dal JDK 10 (marzo 2018).
Come funziona
Optional.get() è ampiamente considerato un code smell perché nasconde la possibilità di fallimento. Il orElseThrow() senza argomenti, aggiunto in Java 10, fa esattamente la stessa cosa ma rende l'intento esplicito: lo sviluppatore si aspetta un valore e vuole un'eccezione se assente.
Documentazione Correlata