Сообщения

Показаны сообщения с ярлыком "Функциональные интерфейсы в Java"

Спецификация Java 11: 9.9. Типы функций

Изображение
Тип функции функционального интерфейса I - это тип метода (§8.2), который может использоваться для переопределения (§8.4.8) абстрактного метода(ов) I. Пусть M будет набором абстрактных методов, определенных для I. Тип функции I состоит из следующего: Параметры типа, типы формальных параметров и тип возвращаемого значения: Пусть m - метод в M с: сигнатурой, которая является субсигнатурой каждой сигнатуры метода в M; и тип возврата R (возможно, void), где либо R совпадает с типом возвращаемого значения каждого метода в M, либо R является ссылочным типом и является подтипом каждого типа возвращаемого значения метода в M (после адаптации для любых параметров типа (§8.4.4), если оба метода имеют одинаковую сигнатуру). Если такого метода не существует, пусть m будет методом в M с: сигнатурой, которая является субсигнатурой каждой сигнатуры метода в M; и тип возвращаемого значения, такой что m может быть заменен типом возвращаемого значения (§8.4.5) для каждого метода в M. Пара...

Спецификация Java 11: 9.8. Функциональные интерфейсы

Изображение
Функциональный интерфейс - это интерфейс, который имеет только один абстрактный метод (помимо методов Object) и, таким образом, представляет собой контракт с одной функцией. Этот "единственный" метод может принимать форму нескольких абстрактных методов с замещающими эквивалентными сигнатурами, унаследованными от суперинтерфейсов; в этом случае унаследованные методы логически представляют один метод. Для интерфейса I пусть M будет набором абстрактных методов, которые являются членами I, не имеющими такой же сигнатуры, как любой public метод экземпляра класса Object (§4.3.2). Тогда I является функциональным интерфейсом, если существует метод m в M, для которого выполняются оба следующих условия: Сигнатура m - это субсигнатура (§8.4.2) каждой сигнатуры метода в M. m заменяется возвращаемым типом (§8.4.5) для каждого метода в M. В дополнение к обычному процессу создания экземпляра интерфейса путем объявления и создания экземпляра класса (§15.9), экземпляры функциональных ин...

Функциональные интерфейсы в Java

Изображение
Функциональные интерфейсы предоставляют целевые типы для лямбда-выражений и ссылок на методы. Каждый функциональный интерфейс имеет один абстрактный метод, называемый функциональным методом для этого функционального интерфейса, к которому сопоставляются или адаптируются параметры лямбда-выражения и возвращаемые типы. Функциональные интерфейсы могут предоставлять целевой тип в нескольких контекстах, таких как контекст присвоения, контекст вызова метода или контекст приведения: // Контекст присвоения Predicate<String> p = String::isEmpty; // Контекст вызова метода stream.filter(e -> e.getSize() > 10)... // Контекста приведения stream.map((ToIntFunction) e -> e.getSize())... Интерфейсы в пакете java.util.function являются функциональными интерфейсами общего назначения, используемыми JDK, а также доступны для использования в пользовательском коде. Хотя они не определяют полный набор форм функций, к которым могут быть адаптированы лямбда-выражения, они предоставляют ...