Java 如何在Guice AbstractModule中使用@Provides方法绑定泛型类型?
例如Java 如何在Guice AbstractModule中使用@Provides方法绑定泛型类型?,java,guice,Java,Guice,例如 这里使用TypeLiteral和Key似乎都不合适,因为我希望返回类型仍然是T类型。thinks?使用类型擦除,Guice将无法从模块实例中获得足够的信息来确定要绑定的类型 相反,接受类文本并使用它。这个例子保留了泛型,但是如果您的用例不需要它们,您可以删除它们 T cannot be used as a key; It is not fully specified. //警告:未测试。如果需要,请修改。 公共最终类SomeModule扩展了AbstractModule{ 私人t类; 公
这里使用TypeLiteral和Key似乎都不合适,因为我希望返回类型仍然是T类型。thinks?使用类型擦除,Guice将无法从模块实例中获得足够的信息来确定要绑定的类型 相反,接受类文本并使用它。这个例子保留了泛型,但是如果您的用例不需要它们,您可以删除它们
T cannot be used as a key; It is not fully specified.
//警告:未测试。如果需要,请修改。
公共最终类SomeModule扩展了AbstractModule{
私人t类;
公共模块(t类){
t=t;
}
@凌驾
public void configure(){
//使用类实例而不是反射,因此这很好。
bind(t).toProvider(新提供程序(){
//…做事
});
}
}
另见:
- (还)
T cannot be used as a key; It is not fully specified.
//警告:未测试。如果需要,请修改。
公共最终类SomeModule扩展了AbstractModule{
私人t类;
公共模块(t类){
t=t;
}
@凌驾
public void configure(){
//使用类实例而不是反射,因此这很好。
bind(t).toProvider(新提供程序(){
//…做事
});
}
}
另见:
- (还)
// Warning: Untested. Please revise if needed.
public final class SomeModule<T> extends AbstractModule {
private Class<T> t;
public SomeModule(Class<T> t) {
this.t = t;
}
@Override
public void configure() {
// Uses a class instance rather than reflection, so this is fine.
bind(t).toProvider(new Provider<T>() {
// ... do stuff
});
}
}