Objects.requireNonNullElseGet是 Java 9 引入的方法,不在 Java 8 中可用。但是,
可以使用 Java 8 的一些功能来模拟类似的效果。
快速查阅
JDK9以上表述:
this.principalFactory = Objects.requireNonNullElseGet(principalFactory, DefaultPrincipalFactory::new);
JDK8中的表述:
this.principalFactory = Optional.ofNullable(principalFactory)
.orElseGet(DefaultPrincipalFactory::new);
原理
在Java9中,该方法本质上就是在obj为空的时候,接收一个Supplier 参数,生成一个默认值。

在 Java 8 中,可以使用 Optional 类的 orElseGet 方法来实现类似的功能。orElseGet 方法接受一个 Supplier 参数,用于在 Optional 对象为空时生成一个默认值。
在上述示例中,我们使用 Optional.ofNullable 方法将可能为空的对象 value 包装成一个 Optional 对象。然后,我们使用 orElseGet 方法来指定在 value 为空时使用的默认值。
请注意,虽然这种方式可以在 Java 8 中模拟类似的功能,但在 Java 9 中直接使用 Objects.requireNonNullElseGet 更为简洁和直观。如果在 Java 8 中使用了大量的类似功能,考虑升级到 Java 9 或更高的版本可能会更方便。
ATFWUS 2023-08-04


















