有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准
https://blog.zysicyj.top
Java 8 引入了 Optional 类,用于解决空指针异常(NullPointerException)的问题。Optional 是一个容器类,可以包含一个非空的值或者表示值不存在。通过使用 Optional,我们可以更加优雅地处理可能为空的值,避免了繁琐的空值检查和异常处理。
下面是 Optional 类的一些常用方法和用法:
- 
创建
Optional对象:- 使用 
Optional.of(value):创建一个包含指定值的Optional对象。如果传入的值为null,则会抛出NullPointerException。 - 使用 
Optional.ofNullable(value):创建一个包含指定值的Optional对象。如果传入的值为null,则会创建一个空的Optional对象。 - 使用 
Optional.empty():创建一个空的Optional对象。 
 - 使用 
 - 
判断值是否存在:
- 使用 
isPresent()方法:判断Optional对象中是否包含值。如果值存在,返回true;否则,返回false。 
 - 使用 
 - 
获取值:
- 使用 
get()方法:获取Optional对象中的值。如果值存在,返回该值;否则,抛出NoSuchElementException异常。在使用get()方法之前,最好先使用isPresent()方法进行判断。 
 - 使用 
 - 
处理值不存在的情况:
- 使用 
ifPresent(Consumer<? super T> consumer)方法:如果值存在,则执行指定的操作。可以传入一个Consumer函数式接口,用于处理值存在的情况。 - 使用 
orElse(T other)方法:如果值不存在,则返回指定的默认值。 - 使用 
orElseGet(Supplier<? extends T> supplier)方法:如果值不存在,则通过指定的供应函数获取一个默认值。 - 使用 
orElseThrow(Supplier<? extends X> exceptionSupplier)方法:如果值不存在,则抛出指定的异常。 
 - 使用 
 
下面是一个简单的示例,展示了 Optional 的用法:
            
            
              java
              
              
            
          
          import java.util.Optional;
public class OptionalExample {
    public static void main(String[] args) {
        String value = "Hello, World!";
        // 创建 Optional 对象
        Optional<String> optional = Optional.of(value);
        // 判断值是否存在
        boolean isPresent = optional.isPresent();
        System.out.println("Value is present: " + isPresent);
        // 获取值
        String retrievedValue = optional.get();
        System.out.println("Retrieved value: " + retrievedValue);
        // 处理值存在的情况
        optional.ifPresent(v -> System.out.println("Value exists: " + v));
        // 处理值不存在的情况
        String defaultValue = optional.orElse("Default Value");
        System.out.println("Default value: " + defaultValue);
        // 使用函数式接口处理值不存在的情况
        String suppliedValue = optional.orElseGet(() -> "Supplied Value");
        System.out.println("Supplied value: " + suppliedValue);
        // 抛出异常处理值不存在的情况
        try {
            String thrownValue = optional.orElseThrow(() -> new RuntimeException("Value not found"));
            System.out.println("Thrown value: " + thrownValue);
        } catch (RuntimeException e) {
            System.out.println("Exception: " + e.getMessage());
        }
    }
}
        在这个示例中,我们创建了一个包含字符串值的 Optional 对象,并演示了判断值是否存在、获取值、处理值存在和值不存在的情况的用法。
使用 Optional 可以提高代码的可读性和健壮性,避免了繁琐的空值检查和异常处理。但需要注意的是,不要滥用 Optional,在某些情况下,使用传统的空值检查可能更加合适。
本文由mdnice多平台发布