我正在使用RoboGuice 4.0beta2,我遇到了这个问题
我有几个不同的对象实现相同的接口
打电话给他们 实现ITest B实现了ITest C实现了ITest我有D类,它一起使用所有3个实现,每个实现有不同的目的,但是相同的API
在D类内部我想注入A,B和C,它们彼此无关,除了它们都实现相同的接口
我如何配置Module类以了解我的意思是ITest的不同实现?
答案 0 :(得分:3)
假设您有以下配置:
class D{
@Inject ITest a;
@Inject ITest b;
@Inject ITest c;
}
您可以按照以下方式设置模块,以便按@Name
注入不同的类型:
public class ABCModule extends AbstractModule {
@Override
protected void configure() {
bind(ITest.class).annotatedWith(Names.named("a")).to(A.class);
bind(ITest.class).annotatedWith(Names.named("b")).to(B.class);
bind(ITest.class).annotatedWith(Names.named("c")).to(C.class);
}
}
允许您注入不同的类型:
class D{
@Inject @Named("a") ITest a;
@Inject @Named("b") ITest b;
@Inject @Named("c") ITest c;
}