首页 > 解决方案 > 检查对象的结果是否为非 null 然后转换为布尔值并在 Java 中设置的简短版本

问题描述

我一直在寻找 Java 中以下语句的简短版本:

if(headers.get(BinderHeaders.NATIVE_HEADERS_PRESENT) !=null ) {
      record
          .setNativeHeadersPresent((boolean) headers.get(BinderHeaders.NATIVE_HEADERS_PRESENT));
    }

如果我想使用Optional.ofNullable它不起作用,因为我还需要将对象转换为布尔值。

PS:我正在使用Java8。

标签: javajava-8nulloptional

解决方案


这不是什么Optional.ofNullable但我会分享它是如何完成的,因为我喜欢方法引用。

Optional.ofNullable(headers.get(BinderHeaders.NATIVE_HEADERS_PRESENT))
        .map(boolean.class::cast)
        .ifPresent(record::setNativeHeadersPresent);

既然你有Map<String, String>,Map#getOrDefault可能是一个选择。

record.setNativeHeadersPresent(
    Boolean.parseBoolean(
        headers.getOrDefault(BinderHeaders.NATIVE_HEADERS_PRESENT, "false")
    )
);

推荐阅读