📜  Java8 Optional类(1)

📅  最后修改于: 2023-12-03 15:01:35.776000             🧑  作者: Mango

Java8 Optional类介绍

简介

Optional类是Java 8中引入的一个有用的工具类,用于解决编码中可能出现的空指针异常问题。Optional类可以表示一个值的容器,这个值可以是空的或者非空的。

特点
  • Optional类是一个泛型类,可以包装任意类型的对象。
  • 可以通过Optional类的静态方法来创建一个空的Optional对象,或者将一个非空值包装在Optional对象中。
  • 通过isPresent方法可以判断Optional对象是否包含了一个值。
  • 通过get方法可以获取Optional对象中的值,但如果值不存在则会抛出NoSuchElementException异常。
  • 通过orElse方法可以设置一个默认值,如果Optional对象中的值不存在,则返回该默认值。
  • 通过orElseGet方法可以设置一个供给型函数,如果Optional对象中的值不存在,则调用该函数返回一个默认值。
  • 通过orElseThrow方法可以抛出一个自定义的异常,如果Optional对象中的值不存在。
  • Optional类还提供了一系列其他方法,用于对包装的值进行操作,如mapflatMapfilter等。
示例代码
import java.util.Optional;

public class OptionalExample {
    public static void main(String[] args) {
        // 创建一个空的Optional对象
        Optional<String> emptyOptional = Optional.empty();

        // 创建一个包含非空值的Optional对象
        Optional<String> valueOptional = Optional.of("Hello");

        // 判断Optional对象是否包含值
        System.out.println(emptyOptional.isPresent());  // false
        System.out.println(valueOptional.isPresent());  // true

        // 获取Optional对象中的值
        System.out.println(valueOptional.get());  // "Hello"

        // 设置一个默认值
        String defaultValue = emptyOptional.orElse("Default Value");
        System.out.println(defaultValue);  // "Default Value"

        // 设置一个供给型函数
        String computedValue = emptyOptional.orElseGet(() -> "Computed Value");
        System.out.println(computedValue);  // "Computed Value"

        // 抛出自定义异常
        try {
            emptyOptional.orElseThrow(() -> new RuntimeException("Value not present"));
        } catch (RuntimeException e) {
            System.out.println(e.getMessage());  // "Value not present"
        }

        // 对包装的值进行操作
        Optional<String> uppercaseOptional = valueOptional.map(String::toUpperCase);
        System.out.println(uppercaseOptional.get());  // "HELLO"

        Optional<Integer> lengthOptional = valueOptional.map(String::length);
        System.out.println(lengthOptional.get());  // 5
    }
}

以上代码示例了Optional类的基本用法,包括创建空的和非空的Optional对象、判断是否包含值、获取值、设置默认值、使用供给型函数、抛出自定义异常以及对包装的值进行操作等。

结论

Optional类是一个强大的工具类,可以有效地避免空指针异常的问题。在编写Java代码时,可以考虑使用Optional类来处理可能为空的值,提高代码的健壮性和可读性。