Errors Principiante

Usa Optional.orElseThrow() come alternativa più chiara e rivelante l'intento a get().

✕ 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.
📖

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
Optional.orElseThrow() senza supplier
Disponibile

Disponibile dal JDK 10 (marzo 2018).

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.

Condividi 𝕏 🦋 in