Багато разів мені здається, що я отримую нульову перевірку, коли отримую значення з якоїсь ієрархії даних, щоб уникнути 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 або null без необхідності перевіряти всі батьківські рівні.
Що ви думаєте про вищезазначене? Чи я створюю проблемний зразок? Чи є кращий спосіб зробити це на вашу думку?
Option
(або Maybe
) монаду :)
java.util.Optional
замість нулів для представлення відсутніх даних? Це надає зручні утиліти як для описаного вами випадку, так і випадків, коли ви хочете продовжувати працювати з даними за замовчуванням, а не просто повертати стан відмови в кінці ланцюга ..