是否有办法在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;
}