我并不主张捕捉NullPointerException
,因为它总是代码味道/懒惰的方法。但是,请考虑您想要访问嵌套bean内部的字段。
防御性NPE检查
if ( null != a && null != a.b() && null ! = a.b().c() && null != a.b().c().d() )
{
doSomething( a.b().c().d().e );
}
懒惰的NPE检查
try
{
doSomething( a.b().c().d().e );
}
catch(NullPOinterException npe)
{
}
两个问题:
性能
在上面的例子中,[a,b,c ...... z]的重量是什么,比防御性NPE检查更重的尝试/捕获更有效?
可读性
在上面的例子中,[a,b,c ...... z]的深度是多重&&?<&?
请不要回答“嵌套豆子”的重新考虑因素。 : - )
答案 0 :(得分:1)
尝试使用Optional:
Optional.ofNullable(a)
.map(A::b)
.map(B::c)
.map(C::d)
.map(d -> d.e)
.ifPresent(()->X::doSomething);
不确定它是否更具可读性。但有时看起来好像是一个正在寻找使用方法的类。