简要回答:
是什么:Optional 类是Java 8引入的一个容器类,用于表示一个值可能存在或不存在。
作用:可以处理null值的问题,避NullPointerException的产生,使代码更加简洁和安全。
Optional
类的基本方法
Optional
类提供了多种方法来处理可能为null
的值,以下是一些最重要和最常用的方法:
创建Optional
对象
-
Optional.empty()
- 作用:创建一个空的
Optional
对象。 - 示例:
Optional<String> emptyOptional = Optional.empty();
- 作用:创建一个空的
-
Optional.of(T value)
- 作用:创建一个包含非
null
值的Optional
对象。如果值为null
,会抛出NullPointerException
。 - 示例:
Optional<String> optional = Optional.of("Hello");
- 作用:创建一个包含非
-
Optional.ofNullable(T value)
- 作用:创建一个包含值的
Optional
对象,如果值为null
,则创建一个空的Optional
对象。 - 示例:
Optional<String> optional = Optional.ofNullable(maybeNullValue);
- 作用:创建一个包含值的
检查值是否存在
-
isPresent()
- 作用:检查
Optional
对象是否包含值。如果包含值,返回true
;否则返回false
。 - 示例:
boolean isPresent = optional.isPresent();
- 作用:检查
-
isEmpty()
- 作用:检查
Optional
对象是否为空。如果为空,返回true
;否则返回false
。 - 示例:
boolean isEmpty = optional.isEmpty();
- 作用:检查
获取值
-
get()
- 作用:获取
Optional
对象中的值。如果Optional
对象为空,会抛出NoSuchElementException
。 - 示例:
String value = optional.get();
- 作用:获取
-
orElse(T other)
- 作用:如果
Optional
对象包含值,则返回该值;否则返回指定的默认值。 - 示例:
String value = optional.orElse("默认值");
- 作用:如果
-
orElseGet(Supplier<? extends T> other)
- 作用:如果
Optional
对象包含值,则返回该值;否则调用指定的Supplier
函数生成并返回一个值。 - 示例:
String value = optional.orElseGet(() -> "生成的默认值");
- 作用:如果
-
orElseThrow(Supplier<? extends X> exceptionSupplier)
- 作用:如果
Optional
对象包含值,则返回该值;否则抛出指定的异常。 - 示例:
String value = optional.orElseThrow(() -> new RuntimeException("值不存在"));
- 作用:如果
条件操作
-
ifPresent(Consumer<? super T> consumer)
- 作用:如果
Optional
对象包含值,则将该值传递给指定的消费者进行处理。 - 示例:
optional.ifPresent(s -> System.out.println("值: " + s));
- 作用:如果
-
ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)
- 作用:如果
Optional
对象包含值,则将该值传递给指定的消费者进行处理;否则执行指定的空操作。 - 示例:
optional.ifPresentOrElse(s -> System.out.println("值: " + s), () -> System.out.println("值不存在"));
- 作用:如果
这些方法可以帮助我们更安全、更简洁地处理可能为null
的值,避免空指针异常。
鉴于作者水平有限,文章可能存在错误
如有指正,十分感谢