【问题标题】:Is this written in a proper java8 way?这是用正确的java8方式编写的吗?
【发布时间】:2020-04-21 10:39:10
【问题描述】:

我有一个 POJO,其中有一个 Map<String, String> 字段。

我需要做以下检查。

  1. 检查 POJO 对象是否为空
  2. 检查map 是否为空
  3. 从地图中获取值
  4. 解析为布尔值 - 在下面的 sn-p 中没有发生
  5. 返回真或假。

对于前4个语句中的否定情况,应该导致错误值。

我有以下内容。

Optional<Object> optional = Optional.ofNullable(event)
                            .map(Event::getAttributes)
                            .map(attrMap -> attrMap.get("restructured"));

return optional.isPresent();

我怎样才能以 Java8 的方式做到这一点?我看到如果值为空,则抛出 NPE。有什么办法可以按照我在步骤中提到的,即如果 null 返回 false?

【问题讨论】:

    标签: java-8


    【解决方案1】:

    Optional#orElse 正是您所需要的:

    return Optional.ofNullable(e)
      .map(Event::getAttribute)
      .map(m -> m.get("restructured"))
      .map(Boolean::parseBoolean)
      .orElse(false);
    

    如果任何步骤产生null,则结果解析为false

    【讨论】:

    • orElse 是否适用于所有中间步骤?对吗?
    • @Gibbs 我想我的最后一句话应该会给你答案
    猜你喜欢
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    相关资源
    最近更新 更多