Я ищу элегантный способ создания factory для инъекции зависимостей. В моем случае factory просто нужно вызвать конструктор с одним аргументом. Я нашел этот ответ, в котором излагаются, как использовать Function<ParamType, ClassToNew>
для таких целей.
Но моя проблема: в моем случае мой ctor объявляет о том, чтобы бросить какое-то проверенное исключение.
То, что я не получаю: создание этой функции с использованием ссылки метода на этот конструктор не работает. Как в:
import java.util.function.Function;
public class Mcve {
public Mcve(String s) throws Exception {
// whatever
}
public static void main(String[] args) {
Function<String, Mcve> mcveFactory = Mcve::new;
}
}
рассказывает мне об "Необработанном исключении: java.lang.Exception" для Mcve::new
. Хотя этот код не вызывает конструктор.
Два вопроса:
- почему эта ошибка? Вышеупомянутый код не вызывает ctor (пока)?
- Есть ли какие-нибудь элегантные способы решить эту загадку? (просто добавив
throws Exception
в мойmain()
справки не)