Java методы по умолчанию с лямбда - PullRequest
0 голосов
/ 25 февраля 2019

Я изучаю синтаксис Java 8 и наткнулся на фрагмент кода в нашем приложении ниже в интерфейсе:

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

Может кто-нибудь помочь мне понять, что означает приведенный выше синтаксис?

Существует несколько реализаций этого метода в приложении, каждая со своей логикой.

1 Ответ

0 голосов
/ 25 февраля 2019

Он просто возвращает EmployeeEnricher, который в основном представляет собой Consumer<Builder> (или функциональный интерфейс того же типа), который ничего не делает со своим параметром, означающим, что если класс, реализующий интерфейс, не @Override этот метод,это станет его поведением по умолчанию (то есть ничего не произойдет).

В вашем приложении вы столкнетесь с разными типами сотрудников, которые, возможно, будут обогащаться различными способами, используя компоновщик, заданный в параметре, используя employeeEnricher().accept(builder)

Это означает, что реализация может означать для меня две вещи:

  • Либо дизайн плохой, и у всех сотрудников должна быть собственная реализация, то есть метод этого интерфейса не должен бытьdefault, но просто классический abstract метод интерфейса

  • Либо некоторые сотрудники не получают обогащения в контексте вашего приложения, и, таким образом, этот метод предлагает реализацию по умолчанию, имеющую смысл

...