Ответ 1
Метод JavaFX FXMLLoader
setControllerFactory
принимает Callback
в качестве параметра.
Это функциональный интерфейс, единственным методом которого является call
, принимающий один параметр и возвращающий один результат. В этом случае тип аргумента Callback<Class<?>, Object>
. Таким образом, выражение лямбда ожидает аргумент типа Class<?>
.
Итак, на самом деле ни один из методов, которые вы указали, не будет вызван. То, что будет называться, getBean(Class<T> requiredType)
(этот метод существует только с Spring 3.0, поэтому вы не увидите его в подключенном 2.5.4 ссылка).
Можно переписать выражение метода следующим образом, чтобы сделать это более понятным:
loader.setControllerFactory(c -> context.getBean(c));
Здесь c
будет иметь тип Class<?>
из-за объявленного параметра setControllerFactory
.
В качестве побочного примечания все будет компилироваться, потому что setControllerFactory
ожидает, что результат обратного вызова будет иметь тип Object
, поэтому результат context.getBean(c)
всегда будет соответствовать.