<T> 注入带有 GIN 的类



是否有办法在gin中注入类类型Class<T> ?例如:

class GenericFoo<T> {
  private final Class<T> klass;
  @Inject
  public GenericFoo(Class<T> klass) {
    this.klass = klass;
  }
}
class Bar { }

在某处注入实例:

..
@Inject
GenericFoo<Bar> instance;
..

和包含如下内容的GinModule:

bind(new TypeLiteral<Class<Bar>>() {}).to(Bar.class);

谢谢

不可能。反射在客户端是被禁止的,所以依赖注入的GIN使用了延迟绑定。这意味着在编译过程中,GWT生成的目标实现在您的情况下是未知的。

如果这是常规的Guice(与Gin相反),您可以这样做:

bind(new TypeLiteral<Class<Bar>>(){}).toInstance(Bar.class);

但是Gin不支持.toInstance(...)绑定。相反,您应该能够使用Provider@Provides方法,如:

@Provides
Class<Bar> providesBarClass() {
  return Bar.class;
}

相关内容

  • 没有找到相关文章

最新更新