(java optional用法) Java中的Optional常用方法有哪些
Java中的Optional是一个可以为空的容器对象,它的主要作用是在编写代码时避免空指针异常。以下是Optional的一些常用方法和它们的使用方式:
Optional.of(T t)
: 为非null的值创建一个Optional。Optional.empty()
: 创建一个空的Optional对象。Optional.ofNullable(T t)
: 为指定的值创建一个Optional,如果指定的值本身就是null,则返回一个空的Optional对象。boolean isPresent()
: 如果值存在返回true,否则false。T get()
: 如果Optional有值则将其返回,否则抛出NoSuchElementException。void ifPresent(Consumer<? super T> consumer)
: 如果对象不是空的,就对执行传入的Lambda表达式。Optional<T> filter(Predicate<? super <T> predicate)
: 如果Optional对象的值满足predicate,则返回describe的Optional对象,否则返回一个空的Optional对象。Optional<T> map(Function<? super T, ? extends U> mapper)
: 如果有值,则对其执行调用mapper函数得到返回值。如果返回值不为null,则创建包含mapper返回值的Optional作为map方法返回值,否则返回空Optional。Optional<T> flatMap(Function<? super T, Optional<U>> mapper)
: 如果值存在,返回基于Optional包含的mapper函数应用的值,否则返回一个空的Optional。T orElse(T other)
: 如果存在该值,返回值, 否则返回other。T orElseGet(Supplier<? extends T> other)
: 如果存在该值,返回值, 否则触发other,并返回other调用的结果。<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)
: 如果存在该值,返回包含的值,否则抛出由Supplier继承的异常
以下是一个使用Optional类的示例,这个示例是在处理可能为null的对象时使用Optional:
public class OptionalTest {
public static void main(String[] args) {
Optional<String> optional = Optional.ofNullable(getData());
//如果数据存在,则返回数据,否则返回默认值"No data".
String data = optional.orElse("No data");
System.out.println(data);
}
public static String getData() {
//模拟可能返回null的情况
return null;
}
}
此段代码中,我们通过Optional.ofNullable(getData())创建了一个Optional对象。然后我们调用orElse方法,如果Optional对象中的值为空,那么orElse方法将返回传递给它的默认值。如果Optional对象中有非空值,它则返回该值。这样可以保证变量data永远不会被赋予null值,大大提高了代码的健壮性。