Sono stato sorpreso dal metodo Optional.ofNullable
. Un giorno ho scritto una funzione che dovrebbe restituire un optional:Optional.of Nullable e concatenamento metodo
private Optional<Integer> extractFirstValueFrom(InsightsResponse insight) {
return Optional.ofNullable(insight.getValues().get(0).getValue());
}
ho erroneamente pensato che Optional.ofNullable
impedirà qualsiasi NullPointerExceptions
all'interno di espressione argomento.
Ora penso di sapere che è stata un'idea molto sciocca. Java deve risolvere gli argomenti prima di passarlo alla chiamata Optional.ofNullable
.
Ma ho una domanda. C'è un modo bello e buono per raggiungere il mio obiettivo? Vorrei ottenere dall'espressione insight.getValues().get(0).getValue()
un valore Integer o null. Null può essere ognuna delle espressioni: insight.getValues()
o insight.getValues().get(0)
.
So che posso solo mettere questo in try/catch block ma mi chiedo se c'è una soluzione più elegante.
Nel tuo caso 'insight' è nullo. È molto meglio non passare mai null ai metodi piuttosto che controllare i metodi null all'interno. –