可以使用ObjectUtils.identityToString()检查Object null

时间:2018-07-10 11:16:08

标签: java apache-commons-lang3

在将值设置为我的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")));

3 个答案:

答案 0 :(得分: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 是否可以为空,但是如果要设置多个参数,则应该只检查一次是否为空。

答案 1 :(得分: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));

答案 2 :(得分:0)

  

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

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

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

 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);
    }