Gin AssistedInject:延迟绑定结果类型'Foo'不应该是抽象的

时间:2012-05-12 17:05:14

标签: java gwt dependency-injection gin assisted-inject

我正在尝试在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'   不应该是抽象的

我做错了什么?

1 个答案:

答案 0 :(得分:1)

似乎问题与GIN无关。这是关于你如何使用你的ElevatorButtonFactory课程。您的注射器界面应如下所示:

@GinModules(YourGinModule.class)
public interface InjectorService extends Ginjector {

    ElevatorButtonFactory getElevatorButtonFactory();

}

创建ElevatorButton实例:

GWT.create(InjectorService.class).getElevatorButtonFactory().create(...)

您可能尝试通过GWT.create()或其他方式实例化您的工厂吗?如果问题不会消失 - 让我看一下完整的堆栈跟踪。