Muitas vezes me vejo checando nulo ao buscar um valor de alguma hierarquia de dados para evitar NullPointerExceptions, que considero propenso a erros e que precisa de muita informação.
Eu escrevi uma rotina muito simples que permite ignorar a verificação nula ao buscar um 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();
}
}
Eu uso um pouco assim ...
Room room = NoNPE.get(() -> country.getTown().getHouses().get(0).getLivingRoom());
O resultado acima resultou na obtenção de um objeto Room ou um nulo, sem a necessidade de nulo verificar todos os níveis pai.
O que você acha do exposto? Estou criando um padrão problemático? Existe uma maneira melhor de fazer isso na sua opinião?
Option
(ou Maybe
mônada) :)
java.util.Optional
vez de nulos para representar dados ausentes? Isto fornece utilitários tanto para o caso de você descrever e casos em que você gostaria de continuar com os dados padrão ao invés de apenas retornando uma condição de falha no final da cadeia ..