Optional用法

078e127cd7a7475a8816f2d6c35e8bd8.jpg在Java中,你可以使用Optional类来包装可能为空的对象引用,以此来消除对显式的空值检查的需要,并防止空指针异常。以下是一些基本的用法:

 

  1.使用Optional.ofNullable(T value)来创建一个可能为空的Optional对象。

  2.使用Optional.of(T value)来创建一个肯定不为空的Optional对象(如果值为空,则会抛出异常)。

  3.使用Optional.empty()来创建一个空的Optional对象。

  4.使用isPresent()来检查是否有值。

  5.使用orElse(T other)或orElseGet(Supplier<? extends T> supplier)来提供一个默认值。

  6.使用orElseThrow(Supplier<? extends X> exceptionSupplier)来抛出一个异常。

  7.使用ifPresent(Consumer<? super T> consumer)来在值不为空的情况下执行操作。

  8.使用filter(Predicate<? super T> predicate)来进行条件判断。

  9.使用map(Function<? super T, ? extends U> mapper)来进行值的转换。

  10.使用flatMap(Function<? super T, Optional<U>> mapper)来进行扁平化转换。

这是一个简单的例子,展示了如何使用Optional:

import java.util.Optional;

 

public class Main {

    public static void main(String[] args) {

        // 创建一个可能为空的Optional对象

        Optional<String> optional = Optional.ofNullable(null);

        

        // 检查是否有值

        if(optional.isPresent()) {

            System.out.println("Value is present");

        } else {

            System.out.println("Value is not present");

        }

        

        // 提供默认值

        String value = optional.orElse("Default Value");

        System.out.println(value);

        

        // 抛出异常

        String valueOrThrow = optional.orElseThrow(() -> new Exception("Value is empty"));

        

        // 执行操作

        optional.ifPresent(v -> System.out.println("Value: " + v));

        

        // 过滤

        Optional<String> filtered = optional.filter(s -> s != null);

        

        // 映射

        Optional<String> mapped = optional.map(s -> s.toUpperCase());

        

        // 扁平化映射

        Optional<String> flatMapped = optional.flatMap(Main::getAnotherOptional);

    }

    

    private static Optional<String> getAnotherOptional(String s) {

        return Optional.ofNullable(s + " Changed");

    }

}

 

在这个例子中,我们首先创建了一个可能为空的Optional对象,然后检查它的存在性,提供了一个默认值,抛出了一个异常,执行了一个操作,过滤了值,并进行了映射和扁平化映射。这是使用Optional的基本方式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值