Optional.ofNullable
和 Optional.of
是 Java 8 引入的 Optional
类中的两个静态方法,它们都用于创建 Optional
对象,但是它们处理空值(null
)的方式不同。
-
Optional.of(T value)
方法接受一个非空的值作为参数,并返回包含给定的非空值的Optional
对象。如果传递给of
方法的参数是null
,那么这个方法会立即抛出一个NullPointerException
。这是一种快速失败的机制,可以在早期阶段就发现潜在的空指针问题。示例代码:
String str = "Hello"; Optional<String> optional = Optional.of(str); // 正常执行
如果
str
为null
,则上面的代码将抛出异常:String str = null; Optional<String> optional = Optional.of(str); // 抛出 NullPointerException
-
Optional.ofNullable(T value)
方法允许传入的参数值为null
。如果传递给ofNullable
方法的参数是null
,它会返回一个空的Optional
对象,否则返回一个包含给定值的Optional
对象。这个方法用于那些可能为空(null
)的情况,提供了一种优雅地处理空值的方式。示例代码:
String str = "Hello"; Optional<String> optional = Optional.ofNullable(str); // 正常执行 String nullStr = null; Optional<String> emptyOptional = Optional.ofNullable(nullStr); // 返回空的 Optional 对象
在使用 Optional
类时,你应该根据实际情况选择合适的方法。如果你的代码逻辑保证了变量不会是 null
,那么可以使用 Optional.of
;如果变量可能是 null
,那么应该使用 Optional.ofNullable
来避免潜在的 NullPointerException
。这样做可以使你的代码更安全、更清晰,并且能够更好地表达你的意图。