具有Lambda的Java默认方法

时间:2019-02-24 21:27:48

标签: java lambda java-8 default-method

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

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

有人可以帮助我理解以上语法的含义吗?

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

1 个答案:

答案 0 :(得分:5)

它仅返回一个EmployeeEnricher,它基本上是一个Consumer<Builder>(或同类型的功能接口),它的参数不执行任何操作,这意味着如果实现该接口的类没有{{ 1}}这种方法,它将成为它的默认行为(意味着什么也不会发生)。

在您的应用程序中,您会遇到不同类型的员工,这些员工可能会使用@Override的参数中给定的构建器以不同的方式进行丰富

这意味着实施对我而言意味着两件事:

  • 要么设计很差,所有员工都应该有自己的实现,这意味着该接口的方法不应为employeeEnricher().accept(builder),而应为接口的经典default方法

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