Optional包装对象类的用法

Optional 对象是一种包装器对象,要么包装对象引用,要么null

Optional<String> optionalS = Optional.of(null); // 添加值为null时,抛出异常
Optional<String> optionalSn = Optional.ofNullable(null); // 添加值为null时,产生一个空的
Optional<String> empty = Optional.empty(); // 产生一个空的
String s = optionalSn.get(); // 获取值 
// optional为null时,设置默认值
String orElse = empty.orElse("1234"); 
String orElseGet = empty.orElseGet(()->"1234"); // orElseGet(Supplier<? extends T> other) 
// optional为null时,抛出异常
String orElseThrow = empty.orElseThrow(() -> new Exception());//orElseThrow(Supplier<? extends X> exceptionSupplier) throws X
boolean isPresent() // 如果不为null,返回true
// void ifPresent(Consumer<? super T> consumer) // 如果不为null,执行拉姆达表达式
// Optional<String> optionalS = Optional.of("kosdf");
optionalS.ifPresent(s->System.out.println("s = " + s));
// map(Function<? super T, ? extends U> mapper)
Optional<String> u = optionalSn.map((s) -> {return s+"hello";}); // lambda返回Optianal值,如果optionalSn有值就获取
// filter(Predicate<? super T> predicate)
Optional<Object> o = optionalS.filter((s) -> {
            System.out.println("s = " + s);
            return true; // 返回true,返回当前optional值,返回false,返回空的optional值
        });
System.out.println("o = " + o);
// flatMap(Function<? super T, Optional<U>> mapper) 
Optional<Object> op = optionalS.flatMap((par) -> {
            par = "kongjks";
            return Optional.of(par); // 返回optional值
        });
System.out.println(op);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值