Почему функциональный интерфейс selectDSLCompleter не содержит абстрактного метода? ⇐ JAVA
Почему функциональный интерфейс selectDSLCompleter не содержит абстрактного метода?
Насколько мне известно, функциональный интерфейс в Java должен иметь один (и только один) абстрактный метод. Однако интерфейс с именем selectDSLCompleter в org.mybatis.dynamic.sql.select не имеет абстрактного метода, но все равно работает нормально. интерфейс определен, как показано ниже:
пакет org.mybatis.dynamic.sql.select; импортировать java.util.function.Function; импортировать org.mybatis.dynamic.sql.SortSpecification; импортировать org.mybatis.dynamic.sql.util.Buildable; @FunctionalInterface общедоступный интерфейс SelectDSLCompleter расширяет Function { статический SelectDSLCompleter allRows(){ возврат (с) -> { вернуть с; }; } статический SelectDSLCompleter allRowsOrderedBy (SortSpecification... columns) { возврат (с) -> { вернуть c.orderBy(столбцы); }; } } и используется в этом примере: метод, определенный в картографе:
default List select (SelectDSLCompleter Completer) { return MyBatis3Utils.selectList(this::selectMany, selectList, person, Completer); } метод, вызываемый в службе:
List allRecords = mapper.select(c -> c); Я что-то пропустил?
Я искал вопрос, но ничего не нашел. Мне просто интересно, как это работает.
Насколько мне известно, функциональный интерфейс в Java должен иметь один (и только один) абстрактный метод. Однако интерфейс с именем selectDSLCompleter в org.mybatis.dynamic.sql.select не имеет абстрактного метода, но все равно работает нормально. интерфейс определен, как показано ниже:
пакет org.mybatis.dynamic.sql.select; импортировать java.util.function.Function; импортировать org.mybatis.dynamic.sql.SortSpecification; импортировать org.mybatis.dynamic.sql.util.Buildable; @FunctionalInterface общедоступный интерфейс SelectDSLCompleter расширяет Function { статический SelectDSLCompleter allRows(){ возврат (с) -> { вернуть с; }; } статический SelectDSLCompleter allRowsOrderedBy (SortSpecification... columns) { возврат (с) -> { вернуть c.orderBy(столбцы); }; } } и используется в этом примере: метод, определенный в картографе:
default List select (SelectDSLCompleter Completer) { return MyBatis3Utils.selectList(this::selectMany, selectList, person, Completer); } метод, вызываемый в службе:
List allRecords = mapper.select(c -> c); Я что-то пропустил?
Я искал вопрос, но ничего не нашел. Мне просто интересно, как это работает.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение