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