我需要解决奇怪的任务:我有一个由Guice创建的A类:
bind(A.class)
但后来我需要用A类初始化Actor(这是Actor的性质):
actorSystem.actorOf(
new Props(
new UntypedActorFactory() {
public UntypedActor create() {
/// ????
}
})
);
如何返回先前绑定的actor A的实例?
答案 0 :(得分:2)
我可能误解了????
隐含的问题,但是当你使用Guice时,你通常会试图避免新的很多对象。当您需要Guice管理的新对象时,您只需要提供该类型的提供程序。即使您没有为它编写提供程序,也有一个隐式提供程序,其中Guice要么为它所绑定的作用域重新使用该对象,要么为您提供一个需要注入的对象的新对象。
它可能看起来像:
class WhateverClassThisIs {
private provider<A> providesA;
@Inject
public WhateverClassThisIs(provider<A> providesA) {
this.providesA = providesA;
}
public whateverMethodThisIs() {
actorSystem.actorOf(
new Props(
new UntypedActorFactory() {
public UntypedActor create() {
/// ???? translation: I need an object A here.
A a = providesA.get();
}
})
);
}
}
如果你可以编辑其他类类型,你可以改为注入它们的构造函数/方法所需的对象,从而消除对new的更多用法。
另一方面,如果您说要获得正确类型的A
,则需要执行此actorSystem.actorOf
调用,那么您需要实现A
的提供程序而不只是绑定它。