0

在将值设置为我的 bean 类属性之前,请找到我下面使用三元运算符检查 null 的代码。

doc.setCatalog_description(sourceAsMap != null && sourceAsMap.get("catalog_description") != null ? sourceAsMap.get("catalog_description").toString() : null);

有没有其他方法可以简化下面的代码。我只是通过使用org.apache.commons.lang3.ObjectUtils;方法来探索。但我不确定它是否正确。

doc.setCatalog_description(ObjectUtils.identityToString(sourceAsMap.get("catalog_description")));
4

3 回答 3

1

我认为您正在寻找方法ObjectUtils.toString(Object)

if (sourceAsMap != null) {
    final String description = ObjectUtils.toString(sourceAsMap.get("catalog_description"));
    doc.setCatalog_description(description);
}

如果您使用的是jdk7或更高版本,则可以将该方法替换为java.util.Objects.toString(Object)

if (sourceAsMap != null) {
    final String description = Objects.toString(sourceAsMap.get("catalog_description"));
    doc.setCatalog_description(description);
}

我不知道sourceAsMap是否可以为空,但是如果您要设置多个参数,则应仅检查一次是否为空。

于 2018-07-10T11:27:53.270 回答
0

为了可读性和清晰度,我建议将这一功能提取到它自己的方法中:

String getDescOrNull(Map<String, Object> sourceAsMap) {
    final String key = "catalog_description";
    if (sourceAsMap == null || !sourceAsMap.containsKey(key)) {
        return null;
    }
    return sourceAsMap.get(key);
}

然后:

doc.setCatalog_description(getDescOrNull(sourceAsMap));
于 2018-07-10T11:38:27.213 回答
0

在将值设置为我的 bean 类属性之前,我正在使用三元运算符检查 null

所以我认为你需要从地图中设置多个 bean 属性。

最好和简单的解决方案是在 sourceMap 上检查一次 null 条件,然后使用三元运算符设置属性。

 if(sourceAsMap != null){
      doc.setCatalog_description(sourceAsMap.get("catalog_description") != null ? sourceAsMap.get("catalog_description").toString() : null);
      doc.setAnother_description(sourceAsMap.get("another_description") != null ? sourceAsMap.get("another_description").toString() : null);
    }
于 2018-07-10T11:39:32.113 回答