请找到我的下面的代码,在设置我的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")));发布于 2018-07-10 19:27:53
我认为您正在寻找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-10 19:38:27
出于可读性和清晰度的考虑,我建议将这部分功能提取到它自己的方法中:
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-10 19:39:32
在将值设置为我的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);
}https://stackoverflow.com/questions/51263786
复制相似问题