一、 简介
在Java 8中,Optional成为一种推荐的方法,用于解决Null指针异常问题。Optional类是一个可以包含或不包含非空值的容器对象。使用Optional类可以避免显式的空指针检查,使代码更加严谨和安全。
二、 Optional类的常用方法
Optional类提供了丰富的方法来操作包含的值,以下是Optional类的常用方法:
1. ofNullable(T value):返回一个指定的非空值的Optional,如果传入的值为空,则返回一个空的Optional。
2. of(T value):返回一个指定的非空值的Optional,如果传入的值为空,则抛出NullPointerException异常。
3. isPresent():如果Optional包含值,则返回true,否则返回false。
4. ifPresent(Consumer<? super T> consumer):如果Optional包含值,则执行consumer函数,
否则什么都不做。
5. get():如果Optional包含值,返回该值,否则抛出NoSuchElementException异常。
6. orElse(T other):如果Optional包含值,返回该值,否则返回other参数。
7. orElseGet(Supplier<? extends T> other):如果Optional包含值,返回该值,否则返回other函数的返回值。
8. orElseThrow(Supplier<? extends X> exceptionSupplier):如果Optional包含值,返回该值,否则抛出由exceptionSupplier函数产生的异常。
9. filter(Predicate<? super T> predicate):如果Optional包含的值满足给定的条件,返回包含该值的Optional,否则返回一个空的Optional。
10. map(Function<? super T,? extends U> mapper):如果Optional包含的值不为空,则对该值执行mapping函数,否则返回一个空的Optional。
11. flatMap(Function<? super T,Optional<U>> mapper):如果Optional包含的值不为空,则
对该值执行mapping函数,返回一个Optional类型的值,否则返回一个空的Optional。
12. equals(Object obj):判断与其他对象是否相等。
13. hashCode():返回Optional包含的值的hashCode。
14. toString():返回Optional包含的值的字符串表示。
三、 使用示例
以下是几个使用Optional类的示例:
1. 创建Optional对象
```java
Optional<String> optional1 = Optional.of("hello");
Optional<String> optional2 = Optional.ofNullable(null);
Optional<String> optional3 = pty();
```
2. 判断Optional是否包含值
```java
System.out.println(optional1.isPresent());  // true
System.out.println(optional2.isPresent());  // false
```
3. 如果Optional包含值,则执行一段代码
```java
optional1.ifPresent(value -> System.out.println("value: " + value));  // 输出"value: hello"
optional2.ifPresent(value -> System.out.println("value: " + value));  // 什么都不输出
```
4. 获取Optional包含的值,或返回默认值
```java
System.out.Else("world"));  // 输出"hello"
System.out.Else("world"));  // 输出"world"
```
5. 获取Optional包含的值,或通过函数返回默认值
```java
System.out.ElseGet(() -> "world"));  // 输出"hello"
System.out.ElseGet(() -> "world"));  // 输出"world"
```
空字符串是什么6. 获取Optional包含的值,或抛出异常
```java
System.out.ElseThrow(() -> new RuntimeException("value is null")));  // 输出"hello"
System.out.ElseThrow(() -> new RuntimeException("value is null")));  // 抛出RuntimeException
```
7. 对Optional包含的值进行过滤
```java
Optional<String> result1 = optional1.filter(value -> ains("h"));
System.out.Else("value not contains 'h'"));  // 输出"hello"
Optional<String> result2 = optional1.filter(value -> ains("x"));

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。