Java lambda 的默认方法

Java default methods with lambda

我正在学习 Java 8 语法,并在我们的应用程序界面中遇到了一段代码:

default EmployeeEnricher employeeEnricher() {
      return builder -> {
          return;
      };
}

谁能帮我理解上面的语法是什么意思?

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

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

在您的应用程序中,您会遇到不同类型的员工,这些员工可能会使用 employeeEnricher().accept(builder)

参数中给定的构建器以不同的方式进行充实

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

  • 要么设计不好,所有员工都应该有自己的实现,意思是这个接口的方法不应该是default,而只是一个classic abstract接口方法

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