Java8的Optional怎么使用
Java 8引入了一种新的Optional类,它是一种容器类,可以保存类型T的值,或者仅仅保存null。Optional类提供了一些有用的方法,来处理与null相关的问题,这样就不用显式检查null了。
Optional类的主要方法有:
- of():创建一个Optional实例,如果传入的参数为null,则抛出NullPointerException
- ofNullable():创建一个Optional实例,如果传入的参数为null,则创建一个空实例
- isPresent():如果值存在返回true,否则返回false
- get():如果Optional有值则将其返回,否则抛出NoSuchElementException
- ifPresent():如果Optional实例有值则为其调用consumer,否则不做处理
- orElse():如果有值则将其返回,否则返回传入的默认值
- orElseGet():如果有值则将其返回,否则返回由Supplier接口生成的值
- orElseThrow():如果有值则将其返回,否则抛出由Supplier接口生成的异常
- map():如果有值,则对其执行调用mapping函数返回Optional类型返回值
- flatMap():与map()方法类似,要求返回值必须是Optional类型
Optional类的使用非常简单,但是能够让代码更加简洁,且不用显式检查null就能够避免空指针异常。
下面是一个Optional类的使用实例:
public class OptionalExample {
public static void main(String[] args) {
Optional<String> optional = Optional.of("Hello");
// 如果值存在,则返回true
if (optional.isPresent()) {
// 如果值存在,则调用该方法
System.out.println(optional.get());
}
// 使用ifPresent方法,如果值存在,则使用该值调用Consumer接口
optional.ifPresent(s -> System.out.println(s.length()));
}
}
上面的代码中,我们使用Optional类的of()方法创建了一个Optional实例,并将字符串“Hello”作为参数传入。然后,我们使用isPresent()方法检查值是否存在,如果存在,则使用get()方法获取该值。我们也可以使用ifPresent()方法,如果值存在,则使用该值调用Consumer接口。
Optional类的使用有助于减少代码的复杂度,并且能够避免出现空指针异常。因此,使用Optional类可以让代码变得更加简洁和安全。
相关文章