2

我正在尝试在 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) {
    // ...
  }

在我的杜松子酒模块中:

install(new GinFactoryModuleBuilder().implement(ElevatorButton.class, ElevatorButton.class)
        .build(ElevatorButtonFactory.class));

这似乎应该足够了,对吧?但是当我尝试将ElevatorButtonFactory其作为注入参数时,出现以下错误:

[错误] [foo] - 延迟绑定结果类型“com.foo.html.client.components.floorpicker.ElevatorButton.ElevatorButtonFactory”不应该是抽象的

我究竟做错了什么?

4

1 回答 1

1

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

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

    ElevatorButtonFactory getElevatorButtonFactory();

}

创建ElevatorButton实例:

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

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

于 2012-05-28T05:54:57.163 回答