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);