写写java中的optional

发布时间 2023-12-26 17:19:13作者: 天启A

当我们写代码的时候经常会碰见nullpointer,所以在很多情况下我们需要做各种非空的判断。JDK8中引入了optional,他是一个包装好的类,我们可以把对象传入optional对象中,接下来就可以在optional中进行安全的消费

一般使用的都是optional的方法ofNullable,这样当对象为null的时候会顺利执行

举一个简单的例子

String a="null";
//a封装至optional
Optional<String> optionala=Optional.ofNullable(a);
//消费对象
optionala.ifPresent(x-> System.out.println(x));

这里推荐使用ofNullable,不推荐使用of,文档中介绍如果使用of并且空值的话会抛出 NoSuchElementException – 如果不存在任何值

    public static <T> Optional<T> ofNullable(T value) {
        return value == null ? empty() : of(value);
    }

还推荐使用orElseGet与orElseThrow,如果存在默认值且value为空则会直接返回默认值,当然两者都为空的时候还是会抛出错误

    public T orElseGet(Supplier<? extends T> other) {
        return value != null ? value : other.get();
    }

使用例子

     String a="null";
        Optional<String> optionala=Optional.ofNullable(a);
        a = optionala.orElseGet(() -> "abc");
        System.out.println(a);  
     a = optionala.orElseThrow(()->new RuntimeException("a为空"));

optional也可以像stream一样有中间操作:过滤filter,map