1. 创建一个 Optional 对象
Optional.of、Optional.ofNullable 、Optional.empty是Optional类的三个静态方法,用于创建Optional对象。
1. Optional.of 方法
Optional.of 方法用于创建一个包含非空值的Optional对象,如果传入的值为null,则会抛出NullPointerException异常。
java
@Test
public void test0() {
Optional<String> optional = Optional.of("zhangsan");
Optional<String> optional1 = Optional.of(null); // java.lang.NullPointerException
}
2. Optional.empty 方法
Optional.empty 方法用于创建一个空的Optional对象,该方法不接受任何参数,直接返回一个空的Optional对象。
java
@Test
public void test0() {
Optional<String> optional = Optional.empty();
}
3. Optional.ofNullable 方法
Optional.ofNullable 方法用于创建一个可能为空的Optional对象,如果传入的值为null,则会创建一个空的Optional对象。
java
@Test
public void test0() {
Optional<String> optional = Optional.ofNullable(null);
}
使用Optional.of方法时,需要确保传入的值不为null,否则会抛出异常。而使用Optional.ofNullable方法时,可以接受null值,并创建一个空的Optional对象。Optional.empty方法直接返回一个空的Optional对象,不包含任何值。
如果确定值不会为null,可以使用Optional.of方法;如果值可能为null,则可以使用Optional.ofNullable方法来避免空指针异常;如果需要创建一个空的Optional对象,可以使用Optional.empty方法。
2. optional.isPresen 方法
Optional.isPresent方法是Optional类的一个实例方法,用于判断Optional对象是否包含非空值,如果Optional对象包含非空值,则isPresent方法返回true;如果Optional对象为空,则返回false。
java
@Test
public void test0() {
Optional<String> optional = Optional.of("zhangsan");
boolean present = optional.isPresent(); // true
Optional<String> optional1 = Optional.ofNullable(null);
boolean present1 = optional1.isPresent();
System.out.println(present); // true
System.out.println(present1); // false
}
通常,在使用Optional对象之前,可以先使用isPresent方法进行判断,以避免在获取值之前出现空指针异常。
3. optional.get 方法
Optional.get方法是Optional类的一个实例方法,用于获取Optional对象中的非空值。如果Optional对象包含非空值,则get方法返回该值;如果Optional对象为空,则会抛出NoSuchElementException异常。
java
@Test
public void test0() {
Optional<String> optional = Optional.of("zhangsan");
if(optional.isPresent()){
optional.get(); // "zhangsan"
}
Optional<Object> optional1 = Optional.ofNullable(null);
optional1.get(); // java.util.NoSuchElementException: No value present
}
需要注意的是,在调用get方法之前,最好先使用isPresent方法进行判断,以确保Optional对象中存在非空值。否则,如果Optional对象为空,调用get方法将会抛出异常。
4. Optional对象为空时返回一个默认值
如果你希望在Optional对象为空时返回一个默认值,可以考虑使用orElse、orElseGet或orElseThrow方法,而不是直接使用get方法。
1. optional.orElse 方法
获取Optional对象中的非空值,如果Optional为空,则返回默认值
java
@Test
public void test0() {
Optional<String> optional1 = Optional.of("zhangsan");
if(optional1.isPresent()){
String value1 = optional1.get();
System.out.println(value1); // "zhangsan"
}
Optional<Object> optional2 = Optional.empty();
Object value2 = optional2.orElse("default");
System.out.println(value2); // "default"
Optional<Object> optional3 = Optional.ofNullable(null);
Object value3 = optional3.orElse("default");
System.out.println(value3); // "default"
}
2. optional.orElseThrow 方法
获取Optional对象中的非空值,如果Optional为空,则抛出指定的异常
java
@Test
public void test0() {
Optional<Object> optional = Optional.ofNullable(null);
optional.orElseThrow(() -> new RuntimeException("Value not present")); // java.lang.RuntimeException: Value not present
}