如何在Java中优雅地处理空值
这个问题在这里已经有了答案:
Apache commons-lang3提供了这个功能:
b.setC(ObjectUtils.defaultIfNull(a.getC(), b.getC()));
但我不得不承认,我不确定这是否会有所改善。
你可以使用var args来检查你的if
语句的所有参数:
public boolean argsNotNull(Object ... objs) {
boolean b = true;
for(Object o : objs) {
if(o == null) {
b = false;
break;
}
}
return b;
}
然后像这样使用它:
if(argsNotNull(a)) {
Object c = a.getC();
if(argsNotNull(b, c)) { // A null 'c' object may be valid here, depends on your logic
b.setC(c);
}
}
由于此方法使用var args,因此可以根据需要为其提供尽可能多的参数,但它不适用于处于当前状态的基元。
bC值是否应该完全反映aC中的内容 ? 在那种情况下,如果aC为null,那么bC应该为空,并且你并不需要一个空检查。
否则,为了避免使用大括号,你可以这样做:
b.setC((a.getC() == null) ? b.getC() : a.getC());
这假定来自b的吸气和吸气器完全匹配。 如果来自a的C为null,则getC()中的setC()实际上什么都不做。
链接地址: http://www.djcxy.com/p/13305.html