【发布时间】:2019-10-07 20:32:45
【问题描述】:
我需要执行一系列空值检查(嵌套空值检查)来获得如下所示的字符串数组
String[] test;
if(CollectionUtils.isNotEmpty(checkList)){
if(MapUtils.isNotEmpty(checkList.get(0))){
if(StringUtils.isNotBlank(checkList.get(0).get("filename"))){
test = checkList.get(0).get("filename").split("_");
}
}
}
有没有更好的方法,比如使用 Java8 Optional,来执行这些嵌套检查?我尝试将 Optional 与 flatmap / map 一起使用,但没有成功。
【问题讨论】:
-
我认为
!checkList.isEmpty()会返回一个 NPE。我想我必须做checkList!= null && !checkList.isEmpty(),所以我使用了另一个库。那么对于这个检查,我必须有嵌套的if()语句吗? -
像
return Optional.ofNullable(checkList) .filter(l -> !l.isEmpty()) .map(l -> l.get(0)) .filter(m -> !m.isEmpty()) .map(e -> e.getOrDefault("filename", "").split("_")) .orElse(new String[10]);这样的东西不好,除非你知道为什么这些硬编码的值会浮动。 -
首先不要让集合引用为
null。然后,您不需要执行null检查的第 3 方方法。
标签: java java-8 nested optional null-check