如何用Lambda表达式实现等效于if-else的空值判断逻辑?
使用Optional+Lambda实现等效if-else逻辑
下面是对应原if-else逻辑的代码实现:
return Optional.ofNullable(list) .map(l -> StringUtils.join(l, ",")) .orElse(null);
步骤解释:
Optional.ofNullable(list):将可能为null的list包装为Optional对象,这一步你已经完成,它会自动处理list为null的情况,生成一个空的Optional实例。.map(l -> StringUtils.join(l, ",")):当Optional中的list非空时,执行Lambda表达式里的拼接操作,把List转换为逗号分隔的字符串;如果list是null,这个map操作会被跳过,Optional保持空状态。.orElse(null):最终判断Optional状态——如果是空(对应原逻辑中list == null),返回null;如果非空,返回map处理后的拼接字符串,完全匹配原if-else的逻辑。
另外,也可以用更简洁的Lambda写法(本质和上面一致):
return Optional.ofNullable(list) .map(list -> StringUtils.join(list, ",")) .orElse(null);
内容的提问来源于stack exchange,提问作者OptimusPrime98
相关产品推荐
相关产品推荐

