1

在数据库调用之前,我使用其设置方法将地图中的一些数据设置为对象以进行数据库更新调用。现在地图可能没有一些数据。

所以我想知道的是,不是在向对象添加数据之前添加代码来检查每个字段的空值,有没有更好的方法可以通过在调用 setter 方法之前减少检查空值的 IF 数量来做到这一点。

我现在有如下条件

if(valueMap.get(ATTRIBUTE1_VALUE) != null){
  object.setAttribute1Value(valueMap.get(ATTRIBUTE1_VALUE));
}
if(valueMap.get(ATTRIBUTE2_VALUE) != null){
  object.setAttribute2Value(valueMap.get(ATTRIBUTE2_VALUE));
}
if(valueMap.get(ATTRIBUTE3_VALUE) != null){
  object.setAttribute3Value(valueMap.get(ATTRIBUTE3_VALUE));
}
if(valueMap.get(ATTRIBUTE4_VALUE) != null){
  object.setAttribute4Value(valueMap.get(ATTRIBUTE4_VALUE));
}
if(valueMap.get(ATTRIBUTE5_VALUE) != null){
  object.setAttribute5Value(valueMap.get(ATTRIBUTE5_VALUE));
}

一种方法显然是使用反射,但我想知道是否还有其他方法可以做到这一点。

4

1 回答 1

0

请注意,您get(ATTRIBUTE1_VALUE)为每个分支调用两次。

相反,只需containsKey(ATTRIBUTE1_VALUE)if检查中进行。

如果要填充的逻辑valueMap没有为键添加 null,这很好。

*确定空值的来源并在那里停止,而不是像这里发生的那样在堆栈的下方进一步处理它。

于 2016-08-06T12:13:20.073 回答