我正在尝试在 GWT 2.4.0 中将 AssistedInject 与 Gin 结合使用:
public interface ElevatorButtonFactory {
ElevatorButton create(int shownFloorNumber, Action<Integer> onClick);
}
@Inject
ElevatorButton(GameHost gameHost, @Assisted int shownFloorNumber,
@Assisted Action<Integer> onClick) {
// ...
}
在我的 Gin 模块中:
install(new GinFactoryModuleBuilder().implement(ElevatorButton.class, ElevatorButton.class)
.build(ElevatorButtonFactory.class));
这看起来应该足够了吧?但是,当我尝试将 ElevatorButtonFactory
作为注入(inject)参数时,出现以下错误:
[ERROR] [foo] - Deferred binding result type 'com.foo.html.client.components.floorpicker.ElevatorButton.ElevatorButtonFactory' should not be abstract
我做错了什么?
最佳答案
这个问题似乎与 GIN 无关。它是关于您如何使用您的 ElevatorButtonFactory
类。您的注入(inject)器界面应如下所示:
@GinModules(YourGinModule.class)
public interface InjectorService extends Ginjector {
ElevatorButtonFactory getElevatorButtonFactory();
}
创建 ElevatorButton
实例:
GWT.create(InjectorService.class).getElevatorButtonFactory().create(...)
您是否尝试通过 GWT.create() 或其他方式实例化您的工厂?如果问题不会消失 - 让我看看完整的堆栈跟踪。
关于java - Gin 辅助注入(inject) : Deferred binding result type 'Foo' should not be abstract,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10565758/