Optional.of(null)返回Optional.empty()。此说法正确吗?
时间: 2024-02-17 11:05:03 浏览: 143
不正确。
`Optional.of(null)` 方法会抛出 `NullPointerException` 异常,因为它要求传入的对象参数不能为 `null`。而 `Optional.empty()` 方法是直接创建一个空的 `Optional` 对象,不包含任何值。
如果需要将一个可能为 `null` 的对象放入 `Optional` 容器中,应该使用 `Optional.ofNullable(obj)` 方法,如果该对象为 `null`,则容器为空。
示例代码:
```
String str = null;
Optional<String> optional1 = Optional.ofNullable(str); // optional1 为空
Optional<String> optional2 = Optional.empty(); // optional2 为空
```
在上述示例代码中,`optional1` 包装的值为 `null`,因为 `str` 为 `null`;而 `optional2` 是一个空的 `Optional` 对象,不包含任何值。
因此,`Optional.of(null)` 方法会抛出异常,而 `Optional.empty()` 方法是直接创建一个空的 `Optional` 对象。
相关问题
Optional.ofNullable(null)返回Optional.empty()。此说法正确吗?
是的,`Optional.ofNullable(null)` 方法返回的确实是一个空的 `Optional` 对象,即 `Optional.empty()`。
`Optional.ofNullable(null)` 方法可以将一个对象放入 `Optional` 容器中,如果该对象为 `null`,则容器为空。因此,当传入 `null` 时,`Optional.ofNullable(null)` 方法返回的就是一个空的 `Optional` 对象,即 `Optional.empty()`。
示例代码:
```
String str = null;
Optional<String> optional1 = Optional.ofNullable(str); // optional1 为空
Optional<String> optional2 = Optional.ofNullable(null); // optional2 为空
Optional<String> optional3 = Optional.empty(); // optional3 为空
System.out.println(optional1.equals(optional2)); // 输出 true
System.out.println(optional2.equals(optional3)); // 输出 true
```
在上面的示例代码中,`optional1` 和 `optional2` 都为空,它们都是由 `Optional.ofNullable(null)` 方法创建的。同时,`optional2` 和 `optional3` 相等,它们都是空的 `Optional` 对象。
Optional.ofNullable 和 Optional.of 有什么区别?
Optional.ofNullable和Optional.of是Java 8中Optional类的两个静态方法,用于创建Optional对象。它们之间的区别在于对于传入的值是否允许为空。
- Optional.ofNullable:接受一个可能为null的值作为参数,并返回一个Optional对象。如果传入的值为null,则返回一个空的Optional对象;否则,将传入的值包装在Optional对象中返回。
示例代码:
```java
String value = null;
Optional<String> optional = Optional.ofNullable(value);
System.out.println(optional); // 输出Optional.empty
value = "Hello";
optional = Optional.ofNullable(value);
System.out.println(optional); // 输出Optional[Hello]
```
- Optional.of:接受一个非空的值作为参数,并返回一个Optional对象。如果传入的值为null,则会抛出NullPointerException。
示例代码:
```java
String value = null;
Optional<String> optional = Optional.of(value); // 抛出NullPointerException
value = "Hello";
optional = Optional.of(value);
System.out.println(optional); // 输出Optional[Hello]
```
阅读全文