Ну, у нас есть FunctionalInterface
:
public interface Consumer<T> {
void accept(T t);
}
И я могу использовать его как:
.handle(Integer p -> System.out.println(p * 2));
Как мы можем разрешить фактический generic type
этого лямбда-параметра в нашем коде?
Когда мы используем его как встроенную реализацию, не так сложно извлечь Integer
из метода этого класса.
Пропустить что-нибудь? Или просто java не поддерживает его для лямбда-классов?
Чтобы быть более чистым:
Эта лямбда завернута в MethodInvoker
(в упомянутом handle
), который в своем execute(Message<?> message)
извлекает фактические параметры для дальнейшего вызова метода отражения. До этого он преобразует предоставленные аргументы в целевые параметры с помощью Spring ConversionService
.
Метод handle
в этом случае является некоторой конфигурацией до того, как реальная работа приложения.
Другой вопрос, но с ожиданием решения для той же проблемы: Java: получить фактический тип универсального метода с параметром лямбда