【发布时间】: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); }这样的东西读起来比你当前的代码差。