我使用模型类映射表,然后使用XML / JSON模式(通过xjc生成的对象)显示数据。
将表中的值绑定到XML doc时,我不喜欢做的一件事是空检查。假设有40列,其中35列可以为空。
我正在做的事情非常简单,如下所示;
if (dataFromTable.getUserPhoneNumber != null) {
jaxbObject.setUserPhoneNumber(dataFromTable.getUserPhoneNumber);
}
我是否有可能制作一个方法来过滤所有空值并将它们设置为jaxbObjects
而无需为每一列编写如上所述的代码?
我认为Java 8有filter()
可以过滤集合中的空值。但是如果我想将它应用于单个对象(表中的1行)并检查每个列的值是什么呢?
答案 0 :(得分:3)
如果您希望在没有明确null
语句的情况下处理值为if
的可能性,则可以使用Optional
:
Optional.ofNullable(dataFromTable.getUserPhoneNumber())
.ifPresent(jaxbObject::setUserPhoneNumber);
与普通的if
声明相比,这并不是一个巨大的胜利。 Optional
将首先通过方法而不是可空引用返回和/或将其与多个处理步骤组合时显示它们的优势。
但是,它的优点是只需要调用getUserPhoneNumber()
一次,而不需要额外的局部变量。