Java基础面试题, Java 的 Optional 类是什么?它有什么用?
Java基础面试题, Java 的 Optional 类是什么?它有什么用?
QA
Step 1
Q:: Java 的 Optional 类是什么?
A:: Optional 是 Java 8 引入的一个容器类,代表了可能包含也可能不包含非空值的容器。它可以有效地防止 NullPointerException,从而减少错误。通过使用 Optional,你可以明确地表明一个值可能为 null,并提供一种安全的方式来处理这种情况。Optional 提供了多种方法,如 isPresent()、ifPresent()、orElse()、orElseGet() 和 orElseThrow()
,来处理可能为空的值。
Step 2
Q:: Optional 的常用方法有哪些?
A:: Optional 类提供了多种方法来处理可能为空的对象。常用方法包括:isPresent():检查值是否存在;ifPresent():在值存在时执行给定的动作;orElse():在值不存在时返回默认值;orElseGet():在值不存在时执行 Supplier 并返回结果;orElseThrow():在值不存在时抛出异常;map():对值应用函数并返回新的 Optional;flatMap()
:与 map 类似,但用于返回 Optional 的情况。
Step 3
Q:: 如何创建 Optional 实例?
A:: Optional 提供了几种创建实例的方式:Optional.of(T value):使用非空值创建 Optional,若值为 null 则抛出 NullPointerException;Optional.ofNullable(T value):使用可能为空的值创建 Optional,如果值为 null,则创建一个空的 Optional;Optional.empty()
:创建一个空的 Optional。
Step 4
Q:: 在什么情况下应该使用 Optional?
A:: Optional 应该在方法返回值可能为空的情况下使用,以避免直接返回 null 带来的潜在风险。它常用于防止 NullPointerException,并可以帮助开发者清晰地表达方法的返回意图。
Step 5
Q:: Optional 类的优缺点是什么?
A:: 优点:Optional 可以帮助减少 NullPointerException,代码更具可读性,明确地表达值的存在性。缺点:Optional 可能会导致额外的对象创建和性能开销,因此在高频率方法调用中使用时需要谨慎,此外,过度使用 Optional 也可能让代码变得复杂。