Muchas veces me encuentro con una comprobación nula cuando obtengo un valor de alguna jerarquía de datos para evitar NullPointerExceptions, que encuentro propenso a errores y necesita mucha repetitiva.
He escrito una rutina muy simple que me permite omitir la comprobación nula al buscar un objeto ...
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 poco así ...
Room room = NoNPE.get(() -> country.getTown().getHouses().get(0).getLivingRoom());
Lo anterior resulta en que obtengo un objeto Room o un valor nulo, sin tener que anular todos los niveles principales.
¿Qué opinas de lo anterior? ¿Estoy creando un patrón problemático? ¿Hay una mejor manera de hacer esto en tu opinión?
Option
(o Maybe
) mónada :)
java.util.Optional
lugar de valores nulos para representar datos faltantes? Esto proporciona utilidades útiles tanto para el caso que describe como para los casos en que desea continuar con los datos predeterminados en lugar de simplemente devolver una condición de falla al final de la cadena ...