Java8的Optional怎么使用

2023-04-24 03:12:00 optional Java8

Java 8引入了一种新的Optional类,它是一种容器类,可以保存类型T的值,或者仅仅保存null。Optional类提供了一些有用的方法,来处理与null相关的问题,这样就不用显式检查null了。

Optional类的主要方法有:

  • of():创建一个Optional实例,如果传入的参数为null,则抛出NullPointerException
  • ofNullable():创建一个Optional实例,如果传入的参数为null,则创建一个空实例
  • isPresent():如果值存在返回true,否则返回false
  • get():如果Optional有值则将其返回,否则抛出NoSuchElementException
  • ifPresent():如果Optional实例有值则为其调用consumer,否则不做处理
  • orElse():如果有值则将其返回,否则返回传入的默认值
  • orElseGet():如果有值则将其返回,否则返回由Supplier接口生成的值
  • orElseThrow():如果有值则将其返回,否则抛出由Supplier接口生成的异常
  • map():如果有值,则对其执行调用mapping函数返回Optional类型返回值
  • flatMap():与map()方法类似,要求返回值必须是Optional类型

Optional类的使用非常简单,但是能够让代码更加简洁,且不用显式检查null就能够避免空指针异常。

下面是一个Optional类的使用实例:

public class OptionalExample {
    public static void main(String[] args) {
        Optional<String> optional = Optional.of("Hello");
        // 如果值存在,则返回true
        if (optional.isPresent()) {
            // 如果值存在,则调用该方法
            System.out.println(optional.get());
        }
        // 使用ifPresent方法,如果值存在,则使用该值调用Consumer接口
        optional.ifPresent(s -> System.out.println(s.length()));
    }
}

上面的代码中,我们使用Optional类的of()方法创建了一个Optional实例,并将字符串“Hello”作为参数传入。然后,我们使用isPresent()方法检查值是否存在,如果存在,则使用get()方法获取该值。我们也可以使用ifPresent()方法,如果值存在,则使用该值调用Consumer接口。

Optional类的使用有助于减少代码的复杂度,并且能够避免出现空指针异常。因此,使用Optional类可以让代码变得更加简洁和安全。

相关文章