java - Gin 辅助注入(inject) : Deferred binding result type 'Foo' should not be abstract

标签 java gwt dependency-injection gwt-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 作为注入(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/

相关文章:

dependency-injection - 使用依赖注入(inject)将 Feathers 应用程序对象传递给 TypeGraphQL

c# - 如何使用依赖注入(inject)在运行时创建新对象

java - Hibernate3-Maven-Plugin 排除生成的文件

google-app-engine - 如何使用 RPC 登录使用 GWT 构建的 Chrome 扩展

gwt - 事件处理程序不会被删除

java - GWT RPC 数组访问

java - Firefox Webdriver 无法使用扩展启动

java - 使用 JMH 作为功能/用户级别性能测试的框架。这是错的吗?

java - 没有请求的Spring Boot运行 Controller

c# - 如何正确使用 Unity 将 ConnectionString 传递到我的存储库类?