optional 解决空指针_JAVA1.8 Optional 类(解决空指针)

java1.8中新增了Optional类来解决空指针踩坑问题,下面简单介绍一下它的api和使用。

of:把指定的值封装为Optional对象,如果指定的值为null,则抛出NullPointerException

Optional optional = Optional.of("JAVA1.8 Optional");

empty:创建一个空的Optional对象

Optional optional = Optional.empty();

ofNullable:把指定的值封装为Optional对象,如果指定的值为null,则创建一个空的Optional对象

Optional optional = Optional.ofNullable("JAVA1.8 Optional");

get:如果创建的Optional中有值存在,则返回此值,否则抛出NoSuchElementException

Optional optional = Optional.of("JAVA1.8 Optional");

optional.get();

orElse:如果创建的Optional中有值存在,则返回此值,否则返回一个默认值

Optional optional = Optional.empty();

optional.orElse("JAVA1.8 Optional");

orElseGet:如果创建的Optional中有值存在,则返回此值,否则返回一个由Supplier接口生成的值

Optional optional = Optional.empty();

optional.orElseGet(()->"JAVA1.8 Optional");

orElseThrow:如果创建的Optional中有值存在,则返回此值,否则抛出一个由指定的Supplier接口生成的异常

Optional optional = Optional.empty();

//OrElseException自定义的异常

optional.orElseThrow(OrElseException::new);

filter:如果创建的Optional中的值满足filter中的条件,则返回包含该值的Optional对象,否则返回一个空的Optional对象

Optional optional = Optional.ofNullable("JAVA");

optional.filter(o -> o.length() > 5).orElse("JAVA1.8 Optional");

map:如果创建的Optional中的值存在,对该值执行提供的Function函数调用

Optional optional = Optional.ofNullable("JAVA1.8 Optional");

optional.map(o -> o.toUpperCase()).orElse("failed");

flagMap:如果创建的Optional中的值存在,就对该值执行提供的Function函数调用,返回一个Optional类型的值,否则就返回一个空的Optional对象

(flatMap与map(Funtion)方法类似,区别在于flatMap中的mapper返回值必须是Optional,map方法的mapping函数返回值可以是任何类型T。调用结束时,flatMap不会对结果用Optional封装。)

Optional optional = Optional.ofNullable("JAVA1.8 Optional");

optional.flatMap(o -> Optional.of("JAVA1.8 Optional")).orElse("failed");

isPresent:如果创建的Optional中的值存在,返回true,否则返回false

Optional optionalEmpty = Optional.ofNullable(null);

optional.isPresent()

ifPresent:如果创建的Optional中的值存在,则执行该方法的调用,否则什么也不做

Optional optional = Optional.ofNullable("JAVA1.8 Optional");

optional.ifPresent(o -> {

System.out.println("optional:" + o);

});

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值