java中Optional使用

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.
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值