Java: как разрешить универсальный тип лямбда-параметра?
Ну у нас есть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)
извлекает фактические параметры для дальнейшего вызова метода отражения. Перед этим он преобразует предоставленные аргументы в целевые параметры, используя SpringConversionService
.
Методhandle
в данном случае это какой-то конфигуратор перед реальной работой приложения.
Другой вопрос, но с ожиданием решения той же проблемы:Java: получить фактический тип универсального метода с параметром лямбда