0
我有這樣的事情:注入匿名內部類(GIN)
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?想到靜態注入,但它看起來像這不工作(也許是因爲我創建一個匿名類繼承)
在正常的Guice相反,我不知道一個injector.getInstance()調用。
的信息:這是一個requestFactory呼叫
我最終擴展了現有的Ginjector。我只有一個getApp() - 這是一個根。現在我有第二個getErrorHandler()調用。但我認爲這是唯一的解決方案。與你提出的解決方案不同的是,在ExtReceiver的靜態構造中創建注入器,而不是在調用類中創建注入器。所以我不必像你那樣手動注入errorHandler。 – ludwigm 2011-03-30 13:24:27