Optional
类的定义
Optional
类是 Java 8 引入的一个容器类,用来解决可能出现的 NullPointerException 问题。它表示一个值可能存在也可能不存在,提供了一种优雅的方式来避免显式的 null
检查。
核心思想
- 避免显式使用
null
:
使用 Optional
代替直接返回 null
,从而避免潜在的空指针异常。
- 增强代码可读性:
提供清晰的 API,表示值的存在或缺失,并能安全处理缺失的值。
- 函数式编程支持:
支持链式调用和流式操作,更适合在函数式编程中使用
创建对象方法
Optional.empty()
:创建一个空的 Optional
对象。
1
|
Optional<String> emptyOpt = Optional.empty();
|
Optional.of(value)
:根据非空值创建一个 Optional
对象。
1
|
Optional<String> nameOpt = Optional.of("John");
|
注意:传入 null
值会抛出 NullPointerException
。
Optional.ofNullable(value)
:根据值创建 Optional
,值可以是 null
。
1
|
Optional<String> nullableOpt = Optional.ofNullable(null);
|
判断值是否存在
isPresent()
:值存在返回 true
,否则返回 false
。
isEmpty()
:值不存在返回 true
(Java 11 引入)。
获取值
get()
:返回值,如果值不存在会抛出 NoSuchElementException
。
1
|
String name = nameOpt.get();
|
orElse(defaultValue)
:值存在则返回值,否则返回默认值。
1
|
String name = nullableOpt.orElse("Default Name");
|
操作值