Java地图

示例

使用map()of方法Optional处理可能null不进行显式null检查的值:

(请注意,map()和filter()操作是立即进行评估的,这与Stream对应项仅在终端操作时进行评估不同。)

语法:

public <U> Optional<U> map(Function<? super T,? extends U> mapper)

代码示例:

String value = null;

return Optional.ofNullable(value).map(String::toUpperCase).orElse("NONE");
// returns "NONE"
String value = "something";

return Optional.ofNullable(value).map(String::toUpperCase).orElse("NONE");
// returns "SOMETHING"

由于在其映射函数返回null时返回一个空的可选内容,因此您可以将多个操作链接为null安全取消引用的一种形式。这也称为Null安全链接。Optional.map()map()

考虑以下示例:

String value = foo.getBar().getBaz().toString();

的任何一个getBar,getBaz并且toString可能会抛出一个错误NullPointerException。

这是一种替代方法,从获得的价值toString()使用Optional:

String value = Optional.ofNullable(foo)
                       .map(Foo::getBar)
                       .map(Bar::getBaz)
                       .map(Baz::toString)
                       .orElse("");

如果任何映射函数返回null,则将返回一个空字符串。

下面是另一个示例,但略有不同。仅当没有任何映射函数返回null时,才会打印该值。

Optional.ofNullable(foo)
        .map(Foo::getBar)
        .map(Bar::getBaz)
        .map(Baz::toString)
        .ifPresent(System.out::println);