У меня есть что-то вроде этого:
request.findAllProjects().fire(new ExtReceiver<List<ProjectProxy>>() {
@Override
public void onSuccess(List<ProjectProxy> response) {
view.setProjects(response);
}
});
Это анонимный внутренний класс абстрактного класса ExtReceiver. ExtReceiver предназначен для обработки ошибок с помощью errorHandler, который я хочу предоставить.
public abstract class ExtReceiver<T> extends Receiver<T> {
private ErrorHandler errorHandler;
public ExtReceiver() {
}
@Inject
public void setErrorHandler(ErrorHandler errorHandler)
{
this.errorHandler = errorHandler;
}
@Override
public abstract void onSuccess(T response);
@Override
public void onFailure(ServerFailure error) {
errorHandler.exception(error);
}
@Override
public void onViolation(Set<Violation> errors) {
ValidationUtils.processViolation(errors);
}
}
Я понимаю, почему это не может работать, потому что я использую новый оператор. Но как я мог сделать что-то подобное? Я хочу иметь этот анонимный класс и не помещать его в собственный файл или что-то в этом роде.
Как я мог ввести это errorHandler? Думал о staticInjection, но, похоже, это тоже не работает (может быть, из-за наследования, которое я создаю, делая анонимный класс)
В отличие от обычного Guice, я не знаю вызова injector.getInstance ().
Для справки: это запрос фабричного звонка