Я создал "продюсерский" интерфейс (для использования с ссылками на методы, соответственно, чтобы их легко высмеивали для модульных тестов):
@FunctionalInterface
public interface Factory<R, T, X extends Throwable> {
public R newInstanceFor(T t) throws X;
}
который я создал таким образом, так как моему первому варианту использования действительно нужно было бросить некоторое исключение WhateverException
.
Но у моего второго варианта использования нет X для броска.
Лучшее, что я смог придумать, чтобы сделать компилятор счастливым:
Factory<SomeResultClass, SomeParameterClass, RuntimeException> factory;
Это компилирует и делает то, что мне нужно, но все же некрасиво. Есть ли способ сохранить этот единственный интерфейс, но не предоставлять X при объявлении конкретных экземпляров?