📌  相关文章
📜  Java中的 OptionalLong orElseThrow() 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:50.950000             🧑  作者: Mango

Java中的 OptionalLong orElseThrow() 方法及示例

在Java 8中,引入了Optional类来解决null引用的问题。Optional类是一个容器,它可能包含非null值,也可能为空。OptionalLong是Optional类的一个子类,它专门用于处理long类型的值。

OptionalLong类中的orElseThrow()方法允许我们快速获取OptionalLong实例中包含的long类型值。如果OptionalLong实例为空,将抛出一个自定义异常。

语法
public long orElseThrow()

参数

返回值

orElseThrow()方法返回OptionalLong实例中包含的long类型值

异常

如果OptionalLong实例为空,将抛出NoSuchElementException异常。我们可以使用orElseThrow(Supplier<X> exceptionSupplier)方法指定自定义异常:

public <X extends Throwable> long orElseThrow(Supplier <? extends X > exceptionSupplier) throws X
示例
OptionalLong optionalLong = OptionalLong.of(100L);

// 获取包含的long类型值
long value1 = optionalLong.orElseThrow(); // 100

OptionalLong emptyOptionalLong = OptionalLong.empty();

// 抛出NoSuchElementException异常
long value2 = emptyOptionalLong.orElseThrow(); 

在上面的示例中,我们首先使用OptionalLong.of()方法创建一个包含long类型值的OptionalLong实例。然后,我们使用orElseThrow()方法获取包含的long类型值。由于OptionalLong实例中包含一个long类型值,因此我们直接获取并存储在变量value1中。

接下来,我们创建一个空的OptionalLong实例。由于该实例中不包含任何值,因此尝试获取包含的值将抛出NoSuchElementException异常。我们在emptyOptionalLong上调用orElseThrow()方法获取包含的值。在这种情况下,由于我们未指定自定义异常,因此抛出NoSuchElementException异常。

现在,让我们使用自定义异常实现相同的示例:

OptionalLong emptyOptionalLong = OptionalLong.empty();

// 抛出自定义异常
long value3 = emptyOptionalLong.orElseThrow(() -> new RuntimeException("Value not present")); 

在这种情况下,我们在emptyOptionalLong上调用orElseThrow(Supplier<X> exceptionSupplier)方法,并在lambda表达式中指定要抛出的自定义异常。

总结

OptionalLong.orElseThrow()方法是在读取OptionalLong实例中的long类型值时使用的便捷方法。如果OptionalLong实例为空,将抛出NoSuchElementException异常。我们还可以使用orElseThrow(Supplier<X> exceptionSupplier)方法指定自定义异常。此方法的常见用法包括在需要确保操作不返回空值时使用。