使用lambda的Java默认方法

use*_*369 3 java lambda java-8 default-method

我正在学习Java 8语法,并在下面的界面中遇到了一段代码:

default EmployeeEnricher employeeEnricher() {
      return builder -> {
          return;
      };
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我理解上面的语法是什么意思吗?

应用程序中有多个此方法的实现,每个实现都有自己的逻辑.

Yas*_*jaj 5

它只返回一个EmployeeEnricher基本上是一个Consumer<Builder>(或同一类型的功能接口),它对其参数没有任何作用,这意味着如果实现接口的类不是@Override这个方法,这将成为它的默认行为(意味着什么都不会发生) .

在您的应用程序中,您可能会遇到不同类型的员工,这些员工可能会使用参数使用中的构建器以不同的方式进行丰富 employeeEnricher().accept(builder)

这意味着实现对我来说意味着两件事:

  • 设计很差,所有员工都应该有自己的实现,这意味着这个接口的方法不应该 default只是abstract接口的经典方法

  • 有些员工在应用程序的上下文中没有得到丰富,因此这种方法提供了一个有意义的默认实现