使用lambda的Java默认方法

问题描述 投票:3回答:1

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

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

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

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

java lambda java-8 default-method
1个回答
5
投票

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

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

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

  • 要么设计很差,所有员工都应该有自己的实现,这意味着这个界面的方法不应该是default,而只是界面的经典abstract方法
  • 有些员工在应用程序的上下文中没有得到丰富,因此这种方法提供了一个有意义的默认实现
© www.soinside.com 2019 - 2024. All rights reserved.