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