有没有办法在杜松子酒中注入类类型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);
由于
答案 0 :(得分:3)
这是不可能的。在客户端禁止反射,因此依赖注入的GIN使用deffered绑定。这意味着在编译期间,GWT会生成目标实现,这些实现在您的情况下是未知的。
答案 1 :(得分:3)
如果这是常规Guice(而不是Gin),你可以这样做:
bind(new TypeLiteral<Class<Bar>>(){}).toInstance(Bar.class);
但Gin不支持.toInstance(...)
绑定。相反,您应该能够使用Provider
或@Provides
方法,例如:
@Provides
Class<Bar> providesBarClass() {
return Bar.class;
}