Java 8 这是用正确的java8方式编写的吗?

Java 8 这是用正确的java8方式编写的吗?,java-8,Java 8,我有一个POJO,其中有一个Map字段 我需要做以下检查 检查POJO对象是否为空 检查map是否为空 从映射中获取值 解析为布尔值-在下面的代码段中不会发生这种情况 返回真或假 对于前4项中的否定情况,语句应导致错误值 我有如下的东西 Optional<Object> optional = Optional.ofNullable(event) .map(Event::getAttributes)

我有一个POJO,其中有一个
Map
字段

我需要做以下检查

  • 检查POJO对象是否为空
  • 检查
    map
    是否为空
  • 从映射中获取值
  • 解析为布尔值-在下面的代码段中不会发生这种情况
  • 返回真或假
  • 对于前4项中的否定情况,语句应导致错误值

    我有如下的东西

    Optional<Object> optional = Optional.ofNullable(event)
                                .map(Event::getAttributes)
                                .map(attrMap -> attrMap.get("restructured"));
    
    return optional.isPresent();
    
    Optional=Optional.ofNullable(事件)
    .map(事件::getAttributes)
    .map(attrMap->attrMap.get(“重组”);
    返回可选的.isPresent();
    
    我怎样才能用Java8的方式做到这一点?我看到,若值为null,则抛出NPE。是否有任何方法可以像我在步骤中提到的那样,即如果null返回false?

    可选#orElse
    正是您需要的:

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

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

    是否
    orElse
    适用于所有中间步骤?吉布斯:我想我的最后一句话应该能给你答案