【问题标题】:Convert if else statement in Optional.ofNullable().ifPresent() in Java [duplicate]在Java中转换Optional.ofNullable().ifPresent()中的if else语句[重复]
【发布时间】:2019-12-12 12:12:11
【问题描述】:

我在java中有这个语句

if (payload.get("mimeType") != null) {
    lettersPayload.put("mimeType", payload.get("mimeType"));

    if (!StringUtils.isEmpty(heytype) && !"all".equals(type)) {
        lettersPayload.put("heytype", heytype);
    }
}

我需要使用Optional.ofNullable().ifPresent() 执行此代码 sn-p 我写了这些:

Optional.of(payload.get("mimeType")).ifPresent(name -> lettersPayload.put("heytype", heytype));

第二个说法很牛逼

有什么想法吗? 谢谢!

【问题讨论】:

  • "正在崩溃" ... isPresent 不接受参数 afaik。
  • 如果requestPayload.get(MIME_TYPE) 可能为空,您应该使用Optional.ofNullable
  • 您是否尝试使用Optional 解决嵌套的ifs?与其使用ifPresent 执行操作,不如使用isPresent 来检查并执行这两个操作,即使是这样.. 像Optional<String> opt = Optional.ofNullable(payload.get("mimeType")); opt.ifPresent(p -> lettersPayload.put("mimeType", p)); if(opt.isPresent() && !StringUtils.isEmpty(heytype) && !"all".equals(type)) { lettersPayload.put("heytype", heytype); } 这样的东西读起来比你当前的代码差。

标签: java spring optional


【解决方案1】:

如果不确定要包装为 Optional 的值是否为 null,则需要使用 ofNullable

然后可以重写您的代码:

Optional.ofNullable(payload.get("mimeType")).ifPresent(mimeType -> {...})

【讨论】:

    猜你喜欢
    • 2017-07-06
    • 1970-01-01
    • 2019-04-09
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    相关资源
    最近更新 更多