Java ifPresent
方法是 Java 8
新添加的一个方法,用于检查一个 Optional 对象是否包含了非 null
的值。在进行一些操作之前,你需要确定这个 Optional 对象确实包含值。如果包含值,就可以用 ifPresent
方法来对值进行一些操作。下面将详细介绍这个方法的用法,以及适合的场景。
一、常见用途
一般来说,当使用 Optional 类型时,我们会编写一些辅助类来进行检查并进行操作。但是,如果尝试直接在 Optional 对象上进行操作,可能会导致类型不匹配或者 NPE 等问题。
ifPresent()
方法就能够解决这类问题。它能够充分利用 lambda 表达式的特性,通过 Optional 对象进行操作。
二、代码示例
下面是一个简单的示例,用于展示 ifPresent()
方法的用法。
import java.util.Optional;
public class Main {
public static void main(String[] args) {
Optional fullName = Optional.ofNullable(null);
System.out.println("Full Name is set? : "+fullName.isPresent());
System.out.println("Full Name: "+fullName.orElseGet(()-> "[none]"));
fullName.ifPresent(System.out::println);
}
}
运行结果如下:
Full Name is set? : false
Full Name: [none]
输出结果中,我们可以看到 ifPresent()
只有当前 Optional 对象非 null
的时候才会进行操作。
三、ifPresent 方法的参数
ifPresent()
方法的参数是一个函数接口,这个函数最多接受一个参数,返回值类型是void。
如果调用 ifPresent()
方法时,Optional 对象包含非 null
的值,那么这个函数接口中的方法就会被调用。具体来说,这个 函数接口 会将 Optional 对象中的值作为参数传递给这个函数。
如果 Optional 对象中的值是一个对象,而函数接口需要一个基本类型,那么 Optional 对象自动的使用了装箱机制,将其装箱为一个对象。
四、小结
总之,ifPresent()
方法是 Java 中多重值作为 API 的一部分,有助于使代码更加规范和易于维护。如果在开发过程中遇到 Optional 对象的操作问题,使用 ifPresent 可随时判断 Optional 对象是否有值,避免出现 NPE 异常。
然而,由于 Optional 没有提供公共接口,如果对于 ifPresent()
方法并不熟悉,可能会给你带来一些困惑。因此,在使用 Optional 相关 API 的过程中,一定要加强对这些函数的掌握,帮助你更好地了解代码。