java8-Optional相关操作

Optional的定义

用来存储对象并解决NPE的包装类。

属性

private final T value;

Optional 对象中包装着一个泛型方法的对象, 当我们在包装类中存放着对应的方法的时候, 我们可以检验这个值是否存在,并且在适当的时候取出这个值来。

产生对象的两种方法

public static <T> Optional<T> of(T value);
public static <T> Optional<T> ofNullable(T value);

of 方法提供一个构造方法, 会将传入的对象引入 Optional 类的构造方法中, 默认构造方法会在调用时检查对象是否为 null , 如果为空的话,将会抛出一个空指针异常。

ofNullable 方法在调用构造器之前会提供一个事前检查,如果传入的对象为空的话,则会自动返回一个空的 Optional 对象,如果传入对象不为空的话,则 返回一个包含着该对象的包装类 。

检查对象

public boolean isPresent();
public void ifPresent(Consumer<? super T> consumer);
sPresent 方法返回对象是否存在,如果存在则返回 true 否则返回 false。

ifPresent 方法传入一个消费函数, 当对应的值存在的时候, 则去执行对应的消费函数内容。

获取对象

public T get();
public T orElse(T other);
public T orElseGet(Supplier<? extends T> other);
public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X;

get 方法将会检查包装类的值,如果为空的话则抛出一个 NoSuchElementException 异常。不为空的话就返回对应的对象内容。

orElse 方法和 get 方法一样,会检查内容是否存在并且返回对象,但是有所不同的内容是, 当内容为空的时候将会返回默认的 other 的对象。

orElseGet 方法传入一个生产函数,和 orElse 方法类似,当对象内容为空的时候会自动的调用生产函数的内容,并且将函数生成的对象返回给方法。

orElseThrow 方法传入一个生产一个继承自 Throwable 的生产函数, 当对象内容为空的时候调用生产函数的方法, 并且将生产出来的 Throwable 对象抛。

示例代码:

**
 * 测试optional
 *
 * @author wangmaoyu
 * @create 2018-03-11 下午10:55
 **/

public class TestOptional {
    public static void main(String[] args) {
        String str=null;
        Optional optional=Optional.of("hello");
        System.out.println(Optional.ofNullable(str).orElse("字符串为空"));
        System.out.println(Optional.ofNullable(str).orElseGet(()->"默认值为空"));
        optional.ifPresent(System.out::println);
        System.out.println(optional.get());
    }
}

效果:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值