关于optional的orElse和orElseGet、orElseThrow

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于optional的orElse和orElseGet、orElseThrow相关的知识,希望对你有一定的参考价值。

参考技术A

如果 Optional 实例有值则将其返回,否则返回 orElse 方法传入的参数

orElseGet 与 orElse 方法类似,区别在于得到的默认值。 orElse 方法将传入的字符串作为默认值, orElseGet 方法可以接受 Supplier 的实现用来生成默认值

如果有值则将其返回,否则抛出 Supplier 接口创建的异常。

以下是自定义的 DemoException

总结

总的来说, orElse 与 orElseGet 方法差不多,两者都会返回定义的内容,前者是字符串,后者是实现了 Supplier 的内容;并且后者会在不允许值为空或 other 无效的情况抛 NullPointerException 异常

springboot datajpa 简明说明

findById返回Optional的使用

查询

    public Object lookupDevice(Integer id) {
        return deviceJpa.findById(id).orElse(null);
    }

更新

    public Object updateDevice(Integer id) {
        Optional<Device> optionalDevice = deviceJpa.findById(id);
        if (optionalDevice.isPresent()) {
            Device device=optionalDevice.get();
            device.setSerial("HEHHEHEEH");
            return deviceJpa.save(device);
        }
        return null;
    }

以上是关于关于optional的orElse和orElseGet、orElseThrow的主要内容,如果未能解决你的问题,请参考以下文章

Optional.ofNullable(参数1).orElse(参数2)

Java 中的可选 orElse 可选

java8:(Optional)

(OrElse and Or) and (AndAlso and And) - 啥时候使用?

Java8特性:Optional空值处理

Java8特性:Optional空值处理