Java 8 中的 Optional 类2025年4月23日 | 7 分钟阅读 Java 在 JDK 8 版本 中引入了一个新的类 Optional。它是一个公共的 final 类,用于处理 Java 应用程序中的 NullPointerException。我们必须导入 java.util 包才能使用这个类。它提供了用于检查特定变量是否有值存在的方法。 Java Optional 类方法
示例:不使用 Optional 的 Java 程序在以下示例中,我们没有使用 Optional 类。程序将异常终止并抛出 NullPointerException。 文件名:OptionalExample.java 输出 Exception in thread "main" java.lang.NullPointerException at lambdaExample.OptionalExample.main(OptionalExample.java:6) 为了避免异常终止,我们使用了 Optional 类。在以下示例中,我们使用了 Optional。因此,我们的程序可以正常执行而不会崩溃。 Java Optional 示例:值不存在时文件名:OptionalExample.java 输出 string value is not present Java Optional 示例:值存在时文件名:OptionalExample.java 输出 java optional class example 另一个 Java Optional 示例输出 JAVA OPTIONAL CLASS EXAMPLE JAVA OPTIONAL CLASS EXAMPLE java optional class example Java Optional 方法示例文件名:OptionalExample.java 输出 Optional.empty Filtered value: Optional.empty Filtered value: Optional[JAVA OPTIONAL CLASS EXAMPLE] Getting value: JAVA OPTIONAL CLASS EXAMPLE Getting hashCode: -619947648 Is value present: true Nullable Optional: Optional[JAVA OPTIONAL CLASS EXAMPLE] orElse: JAVA OPTIONAL CLASS EXAMPLE orElse: Value is not present JAVA OPTIONAL CLASS EXAMPLE 当值不存在时使用备用值:orElse() 和 orElseGet()Java 的 Optional 类中的 orElse() 和 orElseGet() 方法用于在 Optional 对象中包含的值不存在时检索该值。它们的目的相似,但在操作方式上略有不同。下面我们通过一个 Java 程序来看看这两个方法的用法。 文件名:OptionalOrElseExample.java 输出 Name with orElse: Default User Computing default username... Name with orElseGet: Computed Default User 使用 map() 和 flatMap() 转换 Optional 值使用 map() 方法map() 方法将一个函数应用于 Optional 中的值(如果存在)。然后,它将结果包装在一个新的 Optional 中。这对于在值保留在 Optional 容器内的同时转换值很有用。 文件名:OptionalFilterExample.java 输出 JOHN DOE 使用 flatMap() 方法flatMap() 方法将一个函数应用于 Optional 中的值,并且该函数必须返回一个 Optional。这对于避免嵌套的 Optional(例如 Optional<Optional<T>>)结构很有用,而是得到一个扁平的 Optional<T> 结构。 文件名:OptionalFlatMapExample.java 输出 Name length: 8 使用 filter() 方法有条件地返回值Java 的 Optional 类中的 filter() 方法提供了一种根据谓词有条件地返回值的方法。如果 Optional 中存在一个值并且它与谓词匹配,则按原样返回 Optional;如果该值不匹配谓词,则返回一个空的 Optional。此方法对于在 Optional 操作链中应用条件逻辑而无需显式 null 检查或条件语句很有用。 filter() 方法的基本用法这是一个示例,演示了如何使用 filter() 来检查包含值上的条件。我们将创建一个场景,检查用户名为“admin”并根据该检查执行操作。 文件名:OptionalFilterExample.java 输出 User is an admin 下一主题Deepseek |
我们请求您订阅我们的新闻通讯以获取最新更新。