Bootstrap

‘Optional. get()‘ without ‘isPresent()‘ check

在Java中,Optional类被引入主要是为了解决NullPointerException的问题,它提供了一种更优雅的方式来处理可能为null的情况。Optional.get()方法用于获取Optional实例中包含的值,但如果Optional实例是空的(即没有值),则调用get()方法会抛出NoSuchElementException

因此,最佳实践是在调用get()之前检查Optional实例是否包含值,通常通过isPresent()方法进行检查。如果不进行这样的检查,就有抛出异常的风险。

不检查isPresent()直接调用get()的风险:

Optional<String> optional = ...;
String value = optional.get(); // 这里可能会抛出NoSuchElementException

如果optional是空的,上述代码将抛出NoSuchElementException

安全的使用方式:

  1. 使用isPresent()检查
Optional<String> optional = ...;
if (optional.isPresent()) {
    String value = optional.get();
    // 使用value进行操作
} else {
    // 处理optional为空的情况
}
  1. 使用orElse()方法
Optional<String> optional = ...;
String value = optional.orElse("default_value");
// 使用value进行操作,如果optional为空,则使用"default_value"
  1. 使用orElseGet()方法
Optional<String> optional = ...;
String value = optional.orElseGet(() -> "default_value");
// 使用value进行操作,如果optional为空,则使用提供的Supplier函数生成默认值
  1. 使用orElseThrow()方法
Optional<String> optional = ...;
String value = optional.orElseThrow(() -> new CustomException("No value present"));
// 使用value进行操作,如果optional为空,则抛出自定义异常
  1. 使用ifPresent()方法
Optional<String> optional = ...;
optional.ifPresent(value -> {
    // 如果optional不为空,则对value进行操作
});

使用Optional的正确方式可以减少代码中的null检查,使代码更加简洁和安全。在实际开发中,应避免不检查isPresent()直接调用get()的做法,以防止运行时异常。

;