Спецификация 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. Пара...