【问题标题】:JDK 8 Optional FeaturesJDK 8 可选功能
【发布时间】:2018-12-13 02:46:23
【问题描述】:

对不起,如果不清楚: 我正在使用 Spring Boot 实现 Restful 服务。 我正在根据请求参数构建一个 URI。我正在检查参数值,并基于此我需要使用参数值构建 URI。如果它不是 null 我想将它添加到 URI 参数。 主机/hello?abc="somevalue"

   MultiValueMap<String,String> params=new LinkedMultiValueMap<String,String>();
   if (null != abc) {
       params.add("abc","123");
   }

我是 JDK 8 功能的新手。

1) 如何使用 JDK 8 可选功能来做到这一点?

2) 是否可以同时抛出异常并使用 Optional 记录它?

【问题讨论】:

  • 不清楚你在找什么,但对于空检查你可以使用Objects.isNull(Object obj)
  • 不,使用 Optional 不可能“抛出异常并记录它”,但您的代码示例也不可能。
  • 使用Optional,如果值丢失,抛出异常很简单直接,如果这就是你的意思吗?我同意这很不清楚。然后让任何代码捕获它,无论是记录它还是应该做什么。
  • 我不知道你在找什么,如果你想检查你的值是否为空,请使用null != value
  • this post 中查看已接受的答案,它提供了一些关于何时应该或不应该使用 Optional 的好建议,当然不是这样。

标签: java java-8 optional


【解决方案1】:

坦率地说,我认为在这里使用 Optional 毫无意义。你的代码很好(我们总是可以讨论尤达条件)。

如果你坚持,你可以写:

    Optional.ofNullable(abc).ifPresent(abc -> params.add("abc","123"));

链接:Yoda Conditions: To Yoda or Not to Yoda

【讨论】:

  • “坦率地说,我认为在这里使用 Optional 没有任何意义。”不能再同意了。 1+。这几乎是最好的。
  • @Ole V V 谢谢。
  • 不客气,@Alpajna。如果您认为答案有帮助,请考虑接受它,请参阅What should I do when someone answers my question? 在这种情况下,您也不需要谢谢 cmets。这是 Stack Overflow 的工作方式有点客观。
猜你喜欢
  • 2017-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 2022-09-22
  • 1970-01-01
相关资源
最近更新 更多