我正在尝试在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
作为注入参数时,我收到以下错误:
[ERROR] [foo] - 延迟绑定结果类型 'com.foo.html.client.components.floorpicker.ElevatorButton.ElevatorButtonFactory' 不应该是抽象的
我做错了什么?
答案 0 :(得分:1)
似乎问题与GIN无关。这是关于你如何使用你的ElevatorButtonFactory
课程。您的注射器界面应如下所示:
@GinModules(YourGinModule.class)
public interface InjectorService extends Ginjector {
ElevatorButtonFactory getElevatorButtonFactory();
}
创建ElevatorButton
实例:
GWT.create(InjectorService.class).getElevatorButtonFactory().create(...)
您可能尝试通过GWT.create()或其他方式实例化您的工厂吗?如果问题不会消失 - 让我看一下完整的堆栈跟踪。