Molte volte mi ritrovo a controllare nulla durante il recupero di un valore da una gerarchia di dati per evitare NullPointerExceptions, che trovo essere soggetto a errori e necessita di molta piastra di caldaia.
Ho scritto una routine molto semplice che mi consente di saltare il controllo null durante il recupero di un oggetto ...
public final class NoNPE {
public static <T> T get(NoNPEInterface<T> in) {
try {
return in.get();
} catch (NullPointerException e) {
return null;
}
}
public interface NoNPEInterface<T> {
T get();
}
}
Lo uso un po 'come questo ...
Room room = NoNPE.get(() -> country.getTown().getHouses().get(0).getLivingRoom());
Quanto sopra mi dà come risultato ottenere un oggetto Room o null, senza dover controllare tutti i livelli padre.
Cosa ne pensi di quanto sopra? Sto creando un modello problematico? C'è un modo migliore per farlo secondo te?
Option
(o Maybe
) monade :)
java.util.Optional
anziché i valori null per rappresentare i dati mancanti? Ciò fornisce utili utilità sia per il caso che descrivi sia per i casi in cui vorresti continuare con i dati predefiniti anziché restituire una condizione di errore alla fine della catena.