Optional.of 和 Optional.ofNullable 的区别
时间: 2024-01-05 17:17:32 浏览: 164
Optional.of和Optional.ofNullable都是用来创建Optional对象的方法,但它们之间有一些区别。
Optional.of方法接收一个非空的值作为参数,如果传入null,则会抛出NullPointerException异常。例如:
```
String str = "hello";
Optional<String> optional = Optional.of(str); // 创建一个包含非空值的Optional对象
```
而Optional.ofNullable方法则可以接收一个任意类型的值作为参数,包括null。如果传入的值为null,则会创建一个空的Optional对象。例如:
```
String str = null;
Optional<String> optional = Optional.ofNullable(str); // 创建一个包含空值的Optional对象
```
因此,当你不确定一个值是否为空时,可以使用Optional.ofNullable方法来创建Optional对象,这样可以避免NullPointerException异常。
相关问题
Optional.ofNullable Optional.of
Optional.ofNullable和Optional.of方法都是Java 8中Optional类的静态方法,用于创建Optional对象。
Optional.ofNullable方法接受一个参数并返回一个Optional对象。如果参数值为null,则返回一个空的Optional对象;否则,返回一个包含参数值的Optional对象。
示例代码:
```java
String name = "John";
Optional<String> optional1 = Optional.ofNullable(name);
System.out.println(optional1); // 输出: Optional[John]
String nullName = null;
Optional<String> optional2 = Optional.ofNullable(nullName);
System.out.println(optional2); // 输出: Optional.empty
```
Optional.of方法接受一个非空的参数并返回一个包含该参数的Optional对象。如果参数值为null,则会抛出NullPointerException异常。
示例代码:
```java
String name = "John";
Optional<String> optional1 = Optional.of(name);
System.out.println(optional1); // 输出: Optional[John]
String nullName = null;
Optional<String> optional2 = Optional.of(nullName); // 抛出NullPointerException异常
```
总结来说,使用Optional.ofNullable方法可以避免对null值进行额外的空指针检查,而不会抛出异常;而使用Optional.of方法则要求参数值非空,否则会抛出异常。
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]
```
阅读全文