Много раз, когда я выбираю значение из некоторой иерархии данных, я проверяю себя на нуль, чтобы избежать исключений NullPointerExceptions, которые, как я считаю, подвержены ошибкам и требуют большого количества шаблонов.
Я написал очень простую процедуру, которая позволяет мне пропустить проверку нуля при получении объекта ...
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();
}
}
Я использую это немного как это ...
Room room = NoNPE.get(() -> country.getTown().getHouses().get(0).getLivingRoom());
Вышеприведенный результат привел к тому, что я получил объект Room или ноль, не проверяя все родительские уровни на ноль.
Что вы думаете о вышесказанном? Я создаю проблемный образец? Есть ли лучший способ сделать это по вашему мнению?
Option
(или Maybe
) монаду :)
java.util.Optional
вместо нулей для представления отсутствующих данных? Это предоставляет удобные утилиты как для описываемого вами случая, так и для случаев, когда вы хотите продолжить работу с данными по умолчанию, а не просто возвращать условие сбоя в конце цепочки ..