Optional是Java中的一个类,它被用于处理可能为空的值。它的设计目的是在编码过程中避免出现空指针异常。Optional类在Java 8中引入,并且是一个泛型类,可以用于包装任意类型的值。

Optional类有以下几个重要的方法:

  • of:用于创建一个包含指定非空值的Optional对象。如果传入的值为null,则会抛出NullPointerException
  • ofNullable:用于创建一个包含指定值的Optional对象。如果传入的值为null,则会创建一个空的Optional对象。
  • isEmpty:用于判断Optional对象是否为空,即是否包含值。
  • isPresent:用于判断Optional对象是否包含值。与isEmpty方法相反,如果包含值则返回true,否则返回false
  • get:用于获取Optional对象中的值。如果Optional对象为空,则会抛出NoSuchElementException
  • orElse:用于获取Optional对象中的值,如果Optional对象为空,则返回一个默认值。
  • orElseGet:用于获取Optional对象中的值,如果Optional对象为空,则通过提供的函数生成一个默认值。
  • orElseThrow:用于获取Optional对象中的值,如果Optional对象为空,则抛出一个指定的异常。

下面是一个示例,展示了如何使用Optional类:

import java.util.Optional;

public class OptionalExample {
    public static void main(String[] args) {
        String value = "Hello, World!";
        Optional<String> optional = Optional.of(value);

        if (optional.isPresent()) {
            String result = optional.get();
            System.out.println(result);
        }

        String defaultValue = "Default Value";
        String result = optional.orElse(defaultValue);
        System.out.println(result);

        String generatedValue = optional.orElseGet(() -> generateValue());
        System.out.println(generatedValue);

        try {
            String nonNullValue = optional.orElseThrow(() -> new RuntimeException("Value is null"));
            System.out.println(nonNullValue);
        } catch (RuntimeException e) {
            System.out.println(e.getMessage());
        }
    }

    private static String generateValue() {
        return "Generated Value";
    }
}

在上述示例中,我们首先使用Optional.of方法创建了一个包含非空值的Optional对象。然后使用isPresent方法判断Optional对象是否包含值,如果包含则使用get方法获取值并进行打印。

接着使用orElse方法获取值,如果Optional对象为空,则返回一个默认值。使用orElseGet方法也可以提供一个函数来生成默认值。

最后,使用orElseThrow方法获取值,如果Optional对象为空,则抛出一个指定的异常。

Optional类的使用可以帮助我们更好地处理可能为空的值,避免空指针异常,并提供了一些便利的方法来获取值或提供默认值。

posted on 2023-07-20 15:13  jarsing  阅读(132)  评论(0)    收藏  举报