很多时候,我发现自己从某些数据层次结构中获取值时会进行空检查,以避免NullPointerExceptions,因为我发现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,而不必对所有父级进行null检查。
您如何看待以上内容?我在创建有问题的模式吗?您认为有更好的方法吗?
Option
(或Maybe
)monad :)
java.util.Optional
空值代替空值来表示丢失的数据?这既提供的情况下,你描述方便的工具,并在您想使用默认的数据进行的情况下,而不是仅仅在链的端返回的故障情况..