我有这样的事情:
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?考虑过staticInjections,但看起来这也不起作用(可能是因为我创建了一个匿名类的继承)
与普通 Guice 相反,我不知道 injector.getInstance() 调用。
有关信息:这是一个 requestFactory 调用