关于后端:面试题精讲JavaOptional用法

54次阅读

共计 1989 个字符,预计需要花费 5 分钟才能阅读完成。

有的时候博客内容会有变动,首发博客是最新的,其余博客地址可能会未同步, 认准 https://blog.zysicyj.top

首发博客地址

文章更新打算

系列文章地址


Java 8 引入了 Optional 类,用于解决空指针异样(NullPointerException)的问题。Optional 是一个容器类,能够蕴含一个非空的值或者示意值不存在。通过应用 Optional,咱们能够更加优雅地解决可能为空的值,防止了繁琐的空值检查和异样解决。

上面是 Optional 类的一些罕用办法和用法:

  1. 创立 Optional 对象:

    • 应用 Optional.of(value):创立一个蕴含指定值的 Optional 对象。如果传入的值为 null,则会抛出 NullPointerException
    • 应用 Optional.ofNullable(value):创立一个蕴含指定值的 Optional 对象。如果传入的值为 null,则会创立一个空的 Optional 对象。
    • 应用 Optional.empty():创立一个空的 Optional 对象。
  2. 判断值是否存在:

    • 应用 isPresent() 办法:判断 Optional 对象中是否蕴含值。如果值存在,返回 true;否则,返回 false
  3. 获取值:

    • 应用 get() 办法:获取 Optional 对象中的值。如果值存在,返回该值;否则,抛出 NoSuchElementException 异样。在应用 get() 办法之前,最好先应用 isPresent() 办法进行判断。
  4. 解决值不存在的状况:

    • 应用 ifPresent(Consumer<? super T> consumer) 办法:如果值存在,则执行指定的操作。能够传入一个 Consumer 函数式接口,用于解决值存在的状况。
    • 应用 orElse(T other) 办法:如果值不存在,则返回指定的默认值。
    • 应用 orElseGet(Supplier<? extends T> supplier) 办法:如果值不存在,则通过指定的供给函数获取一个默认值。
    • 应用 orElseThrow(Supplier<? extends X> exceptionSupplier) 办法:如果值不存在,则抛出指定的异样。

上面是一个简略的示例,展现了 Optional 的用法:

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,在某些状况下,应用传统的空值查看可能更加适合。
<!– md tj.md –>

本文由 mdnice 多平台公布

正文完
 0