假设有一个类 A 的构造函数看起来像这样:
public A(@Assited long id, @Assisten String name, ServiceA serviceA, ServiceB serviceB)
还有AFactory:
public interface AFactory{
A create(long id, String name);
}
因此,要创建一个 AI 实例显然需要执行以下操作:
injector = Guice.createInjector(new MyModule());
AFactory af = injector.getInstance(AFactory .class);
A a = AFactory.create(100, "mike");
但是,假设我有其他类:B 类、C 类和 D 类具有类型 A 的成员,例如(具有字段注入但也可以是 ctor):
public class B{
@Inject
A a;
}
我希望将相同的 A 实例注入到这些类中。但是仍然可以选择将 A 的另一个实例注入其他类(比如说 E 类和 F 类)。
这样做的正确方法是什么?我只是想不出一个干净的方法来做到这一点。