Java Optional orElseThrow()方法及示例
Java中 java.util. Optional类的 orElseThrow() 方法用于获取该Optional实例的值(如果存在)。 在Java中的 Optional类被 用来获取这个Optional实例的值(如果存在)。如果这个Optional实例中没有值,那么这个方法就会抛出由指定供应商产生的异常。
语法
public <X> T
orElseThrow(Supplier<X> exceptionSupplier)
throws X extends Throwable
参数: 该方法接受 Supplier 作为X类型的参数,如果该Optional实例中没有值,则抛出一个异常。
返回供应商: 如果存在的话,此方法返回此可选实例的 值 。如果这个Optional实例中没有值,那么这个方法将抛出由指定的供应商产生的异常。
异常。如果这个Optional实例中没有任何值,这个方法会抛出NullPointerException。
下面的程序说明了orElseThrow()方法:
程序1 :
// Java program to demonstrate
// Optional.orElseThrow() method
import java.util.*;
import java.util.function.*;
public class GFG {
public static void main(String[] args)
{
// create a Optional
Optional<Integer> op
= Optional.of(9455);
// print supplier
System.out.println("Optional: "
+ op);
// orElseThrow supplier
System.out.println(
"Value by orElseThrow("
+ "ArithmeticException::new) method: "
+ op.orElseThrow(
ArithmeticException::new));
}
}
输出。
Optional: Optional[9455]
Value by orElseThrow(ArithmeticException::new) method: 9455
程序2
// Java program to demonstrate
// Optional.orElseThrow() method
import java.util.*;
import java.util.function.*;
public class GFG {
public static void main(String[] args)
{
// create a Optional
Optional<Integer> op
= Optional.empty();
// print supplier
System.out.println("Optional: "
+ op);
try {
// orElseThrow supplier
System.out.println(
"Value by orElseThrow("
+ "ArithmeticException::new) method: "
+ op.orElseThrow(
ArithmeticException::new));
}
catch (Exception e) {
System.out.println(e);
}
}
}
输出。
Optional: Optional.empty
java.lang.ArithmeticException
参考资料: https://docs.oracle.com/javase/9/docs/api/java/util/Optional.html#orElseThrow-java.util.function.Supplier-