Я использую библиотеку повторных попыток Spring, чтобы повторить вызов веб-службы в случае возникновения какой-либо ошибки, если служба не работает или истекло время ожидания сети. Однако в моем коде постоянно появляется ошибка, указанная ниже - Incorrect number of arguments for type RetryCallback<T,E>; it cannot be parameterized with arguments <Object>
. Метод, в котором я реализую логику, возвращает void, поэтому я в принципе не могу вернуть что-либо при повторном вызове. Посоветуйте, пожалуйста, какую ошибку я здесь сделал -
RetryTemplate retryTemplate = createRetryTemplate(3, 1000);
return retryTemplate.execute(new RetryCallback<Object>() {
@Override
public Object doWithRetry(RetryContext context) throws Exception {
userUpdateService.updateUser(userName, userID);
}
});
3 ответа
RetryCallback запрашивает два типа параметр, тип возвращаемого значения и тип исключения.
RetryTemplate retryTemplate = createRetryTemplate(3, 1000);
return retryTemplate.execute(new RetryCallback<Object,Exception>() {
@Override
public Object doWithRetry(RetryContext context) throws Exception {
userUpdateService.updateUser(userName, userID);
}
});
Тип {{X0 }} принимает два общих параметра (тип возвращаемого значения и тип созданного исключения), но вы передаете только один.
public interface RetryCallback<T, E extends Throwable> {
T doWithRetry(RetryContext context) throws E;
}
Итак, вы хотели бы создать его так:
new RetryCallback<Object, Throwable>() { //...
документация для RetryCallback
указывает 2 типа, из которых вы указали только один.
Второй тип - это то, какую производную от Throwable
вы (возможно) выберете, например Exception
, которую вам также необходимо указать:
RetryTemplate retryTemplate = createRetryTemplate(3, 1000);
return retryTemplate.execute(new RetryCallback<Object, Exception>() {
@Override
public Object doWithRetry(RetryContext context) throws Exception {
userUpdateService.updateUser(userName, userID);
}
});
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.