Optional

1.构造函数

Optional(T value)private权限,不能由外部调用的
empty()返回EMPTY对象
of(T value)返回一个指定非null值的Optional。(当Value值为空时,依然会报NullPointerException,当Value值不为空时,能正常构造Optional对象)
ofNullable(T value)如果为非空,返回 Optional 描述的指定值,否则返回空的 Optional。(不管Value是不是空,能正常构造Optional对象)

1.isPresent()和ifPresent(Consumer consumer)

isPresent如果值存在则方法会返回true,否则返回 false。User user = Optional.ofNullable(user);if(Optional.isPresent()){ do something}
ifPresent(Consumer<? super T> consumer)如果值存在则使用该值调用 consumer , 否则不做任何事情。Optional.ofNullable(user).ifPresent(u->{dosomething(u);});

2.orElse(T other),orElseGet(Supplier other)和orElseThrow(Supplier exceptionSupplier)

orElse(T other)如果存在该值,返回值, 否则返回 other。User user = null;user = Optional.ofNullable(user).orElse(createUser());
orElseGet(Supplier other)如果存在该值,返回值, 否则触发 other,并返回 other 调用的结果。User user = null;user = Optional.ofNullable(user).orElseGet(() -> createUser());
orElseThrow(Supplier exceptionSupplier)如果存在该值,返回包含的值,否则抛出由 Supplier 继承的异常User user = null;Optional.ofNullable(user).orElseThrow(()->new Exception(“用户不存在”));

当user值不为null时,orElse函数依然会执行createUser()方法,而orElseGet函数并不会执行createUser()方法,大家可自行测试。

3.map(Function mapper)

map(Function mapper)如果有值,则对其执行调用映射函数得到返回值。如果返回值不为 null,则创建包含映射返回值的Optional作为map方法返回值,否则返回空Optional。Optional.ofNullable(user).map(u-> u.getName()).get();

4.filter(Predicate predicate)

filter(Predicate predicate)如果值存在,并且这个值匹配给定的 predicate,返回一个Optional用以描述这个值,否则返回一个空的Optional。Optional user1 = Optional.ofNullable(user).filter(u -> u.getName().length()<6);

来源:https://mp.weixin.qq.com/s/w9P_HZjwPbc4WDJiz6Vcgg
https://www.runoob.com/java/java8-optional-class.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值