在 Java 中,Optional 是 java.util 包下的一个容器类,用来优雅地表示一个值“可能为空”的情况。创建 Optional 对象主要有以下几种方式:
Optional.of()适用于:确定值不为 null
Optional<String> opt = Optional.of("Hello");
⚠️ 如果传入 null,会抛出 NullPointerException:
Optional<String> opt = Optional.of(null); // NullPointerException
Optional.ofNullable()适用于:值可能为 null
Optional<String> opt = Optional.ofNullable(null); // 空 Optional
Optional<String> opt2 = Optional.ofNullable("Hello"); // 有值
这是最常用、最安全的方式。
Optional.empty()适用于:明确创建一个“空值”容器
Optional<String> opt = Optional.empty();
Java 为性能考虑提供了专门版本:
OptionalInt optInt = OptionalInt.of(10);
OptionalLong optLong = OptionalLong.of(100L);
OptionalDouble optDouble = OptionalDouble.of(3.14);
⚠️ 一般推荐使用 Optional<T>,而不是基本类型版本。
Optional<String> name = Optional.ofNullable(getName());
name.ifPresent(System.out::println);
String result = Optional.ofNullable(getName()).orElse("default");
String result = Optional.ofNullable(getName())
.orElseThrow(() -> new RuntimeException("name is null"));
| 方法 | 适用情况 |
|---|---|
Optional.of() |
确定不为 null |
Optional.ofNullable() |
可能为 null ✅ 推荐 |
Optional.empty() |
明确表示空值 |
如果你愿意,我也可以讲 Optional 的最佳实践 / 常见误用。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。