Optional容器的使用技巧,判空处理

目录

1.判断执行的方法返回值是否为null

2.如果不为空则结束


以下是Optional类的一些主要方法:

  1. Optional.empty():返回一个空的Optional对象。
  2. Optional.of(T value):返回一个包含给定非null值的Optional。
  3. Optional.ofNullable(T value):如果非空,可返回一个包含值的Optional,否则返回一个空的Optional。
  4. Optional.get():如果值存在返回值,否则抛出NoSuchElementException。
  5. Optional.isPresent():如果值存在则方法会返回true,否则返回 false。
  6. Optional.ifPresent(Consumer<? super T> consumer):如果值存在,就执行给定的代码块。
  7. Optional.orElse(T other):如果有值则将其返回,否则返回指定的other对象。
  8. Optional.orElseGet(Supplier<? extends T> other):如果有值则将其返回,否则返回从suppiler获取的值。
  9. Optional.orElseThrow(Supplier<? extends X> exceptionSupplier):如果有值则将其返回,否则抛出由指定的供应者创建的异常。

1.判断执行的方法返回值是否为null

PayLoanRecord payLoanRecord = 
        Optional.ofNullable(
                payLoanRecordService.getOne(new QueryWrapper<PayLoanRecord>().lambda()
                        .eq(PayLoanRecord::getOrderId, reference)
                        .eq(PayLoanRecord::getPayChannel, PayChannelEnum.MNF)
                        .eq(PayLoanRecord::getOrg, org))
        ).orElseThrow(() ->
             new ProcessException(String.format("未找到PayLoanRecord记录,orderId:%s,org:%s", reference, org)));

ifPresent方法和orElseThrow方法方面,第一段代码使用了ifPresent这个方法,这意味着如果Optional中的值存在,即非null,那么就会执行ifPresent后面的lambda表达式。

2.如果不为空则结束

      Optional.ofNullable(
                this.getOne(new LambdaQueryWrapper<StackCallbackRefund>()
                        .eq(StackCallbackRefund::getTransactionReference, refund.getTransactionReference())
                        .eq(StackCallbackRefund::getStatus, refund.getStatus()))
        ).ifPresent((stackCallbackRefund)-> {
            log.info("回调表中已有记录transaction_reference:{}",stackCallbackRefund.getTransactionReference());
            throw new ProcessException("回调表中已有记录");
        });

第二段代码使用了 orElseThrow,这意味着如果Optional中的值不存在,即为null,那么就会抛出orElseThrow中定义的异常。简单来说,第一段代码在值存在时执行操作,而第二段代码在值不存在时执行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值