ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### [创建 Optional](https://lingcoder.gitee.io/onjava8/#/book/14-Streams?id=%e5%88%9b%e5%bb%ba-optional) 当我们在自己的代码中加入**Optional**时,可以使用下面 3 个静态方法: * `empty()`:生成一个空**Optional**。 * `of(value)`:将一个非空值包装到**Optional**里。 * `ofNullable(value)`:针对一个可能为空的值,为空时自动生成**Optional.empty**,否则将值包装在**Optional**中。 下面来看看它是如何工作的。代码示例: ~~~ // streams/CreatingOptionals.java import java.util.*; import java.util.stream.*; import java.util.function.*; class CreatingOptionals { static void test(String testName, Optional<String> opt) { System.out.println(" === " + testName + " === "); System.out.println(opt.orElse("Null")); } public static void main(String[] args) { test("empty", Optional.empty()); test("of", Optional.of("Howdy")); try { test("of", Optional.of(null)); } catch(Exception e) { System.out.println(e); } test("ofNullable", Optional.ofNullable("Hi")); test("ofNullable", Optional.ofNullable(null)); } } ~~~ 输出结果: ~~~ === empty === Null === of === Howdy java.lang.NullPointerException === ofNullable === Hi === ofNullable === Null ~~~ 我们不能通过传递`null`到`of()`来创建`Optional`对象。最安全的方法是, 使用`ofNullable()`来优雅地处理`null`。