У меня есть класс реализации, который ловит все объявленные исключения метода интерфейса. Поскольку я ввожу и использую переменную экземпляра интерфейса внутри класса и надеюсь вызвать метод реализации - я, естественно, получаю ошибку компилятора, указывающую, что мне нужно либо бросить/уловить исключения, объявленные в родительском.Spring: DI с интерфейсом с классом реализации менее ограничительные исключения
Немного вариантов, которые приходят мне на ум, но мне они не нравятся. Просто хочу знать, как лучше всего это сделать.
- Cast экземпляр интерфейса для осущ
- Создать интерфейс ребенка с помощью метода без исключений
- Может быть просто не объявлять исключения в интерфейсе. Просто поймайте все возможные исключения в impl.
EDIT 1: Прикрепленный пример кода
public interface ServiceUtilInterface {
public abstract String getMessage(String ID) throws CustomException;
}
@Component(value="MyServiceUtil")
public class MyServiceUtil implements ServiceUtilInterface {
@Override
public String getMessage(String ID) {
try{
//do something
}catch(CustomException e){
}
return "";
}
@Component
public class Usage {
@Autowired
ServiceUtilInterface serviceUtil;
public void someMethod(){
serviceUtil.getMessage("123");
//This where compiler expects me to throw /catch the exception defined in interface
}
}
Объяснение с помощью некоторого кода helpus –
Отредактировал мой вопрос с помощью некоторого кода. Спасибо – pingu