欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java中Optional使用

程序员文章站 2022-06-07 12:36:53
...

java中Optional使用

一、简介

Optional是jdk8引入的,用于处理java中的null。在实际使用,还是比较好用的,这里对常见用法进行介绍。

二、使用

2.1 创建

//创建空的Optional
Optional<String> empOpt = Optional.empty();
//创建不为空的Optional,此时若传为null,则抛空指针异常
Optional<String> opt = Optional.of("hello");
//创建可以为空的Optional
Optional<String> nullOpt = Optional.ofNullable(null);

2.2 取值

2.2.1 get方法

get方法获取非空值,若为空,则抛异常NoSuchElementException。

//get方法获取非空值,若为空,则抛异常NoSuchElementException
System.out.println(opt.get()); //hello
2.2.2 orElse方法

orElse方法,若不为空,返回原值,否则返回指定值。

//orElse方法,若不为空,返回原值,否则返回指定值
System.out.println(opt.orElse("default")); //hello
System.out.println(nullOpt.orElse("default")); //default
2.2.3 orElseGet方法

orElseGet方法,若不为空,返回原值,否则返回Supplier中get方法生成值。

//orElseGet方法,若不为空,返回原值,否则返回Supplier中get方法生成值
Supplier<String> sup = () -> "default";
System.out.println(opt.orElseGet(sup)); //hello
System.out.println(nullOpt.orElseGet(sup)); //default
2.2.4 orElseThrow方法

orElseThrow方法,若不为空,返回原值,否则返回Supplier中get方法生成的异常。

//orElseThrow方法,若不为空,返回原值,否则返回Supplier中get方法生成的异常
Supplier<Exception> exSup = () -> new RuntimeException("null error");
System.out.println(opt.orElseThrow(exSup)); //hello
System.out.println(nullOpt.orElseThrow(exSup)); //抛异常

2.3 存在时执行

ifPresent方法,当值非空时,执行Consumer对象,否则不执行。

//ifPresent方法,当值非空时,执行Consumer对象,否则不执行
opt.ifPresent(System.out::println); //hello
nullOpt.ifPresent(System.out::println); //无输出

2.4 存在时过滤

//filter方法,当对象非null同时满足过滤条件Predicate,则返回原对象Optional,否则返回空Optional。

//filter方法,当对象非null同时满足过滤条件Predicate,则返回原对象Optional,否则返回空Optional
opt.filter(t->t.contains("h")).ifPresent(System.out::println); //hello
nullOpt.filter(t->t.contains("h")).ifPresent(System.out::println); //无输出

2.5 存在时转换

2.5.1 map方法

map方法,当对象非null时执行Function,否则返回空Optional。

//map方法,当对象非null时执行Function,否则返回空Optional
Function<String, String> fun = t -> t + ".";
opt.map(fun).ifPresent(System.out::println); //hello.
2.5.2 flatMap方法

flatMap方法类似map,只是Function函数返回为Optional类型,当对象非null时执行Function对象,否则返回空

//flatMap方法类似map,只是Function函数返回为Optional类型,当对象非null时执行Function对象,否则返回空Optional
Function<String, Optional<String>> optFun = t -> Optional.ofNullable(t + ".");
opt.flatMap(optFun).ifPresent(System.out::println); //hello.
相关标签: java使用