这个不到10分钟的短视频,介绍了从 JDK 8 引入的 Java Optional 类的使用方法。内容包括Optional类的使用场景,以及如何使用of, ofNullable, get, isEmpty, elseOr, ifEmpty 等 Optional 的方法。每个方法都通过 IntelliJ 展示了代码编写过程和运行结果,以便于观众快速理解和上手。
视频链接:https://live.youkuaiyun.com/v/142471
有关 Java Optional
Java Optional 是从 JDK 8 中引入的,为了解决 Java 中空指针的问题。通过这个类 API 可以明确的告诉调用者,返回结果可能为空。这个类还提供了一些方法方便处理空指针的问题,比如 orElse 方法在结果为空时返回什么。结合 Java 的流式 (stream) 变成可以让代码更简洁清晰。
讨论
其实Java Optional 类有一个问题,如果返回 Optional 类的方法直接返回了 null 怎么办。在视频中,我的回答是这个没有办法,JDK 的说法是程序员必须保证返回的Optional 类不为空。这个是一个必须遵守的约定。比如视频中的 getName 函数就有可能返回 null。
static Optional<String> getName()
{
// 这里可以直接返回 null,但是由于约定,我不能这样写
return Optional.ofNullable(null);
}
在视频中由于时间有限,我没有展开来说。Java 实现 Optional 是使用新增类或者说新增 API 来实现的,所以只能通过跟程序员的约定来约束。相比之下 .Net 的 Nullable 类有编译器级别的支持,即使是函数中直接返回 null 编译器也会把它包装成 Nullable。比如如下代码,虽然是返回的 null,但是调用者得到的是一个 Nullable 对象。
int? getAge()
{
return null;
}