有的时候博客内容会有变动,首发博客是最新的,其余博客地址可能会未同步, 认准
https://blog.zysicyj.top
首发博客地址
文章更新打算
系列文章地址
Java 8 引入了 Optional
类,用于解决空指针异样(NullPointerException)的问题。Optional
是一个容器类,能够蕴含一个非空的值或者示意值不存在。通过应用 Optional
,咱们能够更加优雅地解决可能为空的值,防止了繁琐的空值检查和异样解决。
上面是 Optional
类的一些罕用办法和用法:
-
创立
Optional
对象:- 应用
Optional.of(value)
:创立一个蕴含指定值的Optional
对象。如果传入的值为null
,则会抛出NullPointerException
。 - 应用
Optional.ofNullable(value)
:创立一个蕴含指定值的Optional
对象。如果传入的值为null
,则会创立一个空的Optional
对象。 - 应用
Optional.empty()
:创立一个空的Optional
对象。
- 应用
-
判断值是否存在:
- 应用
isPresent()
办法:判断Optional
对象中是否蕴含值。如果值存在,返回true
;否则,返回false
。
- 应用
-
获取值:
- 应用
get()
办法:获取Optional
对象中的值。如果值存在,返回该值;否则,抛出NoSuchElementException
异样。在应用get()
办法之前,最好先应用isPresent()
办法进行判断。
- 应用
-
解决值不存在的状况:
- 应用
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 多平台公布