以更好的方式处理setter操作的null条件

时间:2016-08-06 11:47:56

标签: java getter-setter null-check

在数据库调用之前,我正在使用其用于数据库更新调用的setter方法将一些数据从地图设置到对象中。现在地图可能没有一些数据。

所以我想知道的是,在向对象添加数据之前,不是添加代码来检查每个字段的null,有没有更好的方法通过在调用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));
}

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

1 个答案:

答案 0 :(得分:0)

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

而只是在containsKey(ATTRIBUTE1_VALUE)检查中执行if

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

*确定null可以在哪里生成并在那里停止它,而不是像在这里发生的那样在堆栈中进一步处理它。