Çoğu zaman kendimi nullPointerExceptions önlemek için bazı veri hiyerarşisinden bir değer getirilirken null kontrol, hatalara eğilimli ve bir sürü boilerplate ihtiyacı buluyorum.
Bir nesneyi getirirken boş denetimi atlamama izin veren çok basit bir rutin yazdım ...
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();
}
}
Biraz böyle kullanıyorum ...
Room room = NoNPE.get(() -> country.getTown().getHouses().get(0).getLivingRoom());
Yukarıdakiler, tüm ebeveyn seviyelerini kontrol etmek zorunda kalmadan bir Room nesnesi veya null elde etmeme neden oldu.
Yukarıdakiler hakkında ne düşünüyorsun? Sorunlu bir kalıp oluşturuyor muyum? Sizce bunu yapmanın daha iyi bir yolu var mı?
Option
(ya da Maybe
) monad'ı yeniden keşfettin :)
java.util.Optional
eksik verileri temsil etmek için null yerine kullanmak üzere yeniden tasarlamayı düşünebilir miyim ? Bu, hem tanımladığınız hem de zincirin sonunda bir arıza koşulu döndürmek yerine varsayılan verilerle devam etmek istediğiniz durumlar için kullanışlı yardımcı programlar sağlar.