我需要解决奇怪的任务:我有 A 类,它是由 Guice 创建的:
bind(A.class)
但后来我需要用 A 类初始化 Actor(本质上是 Actor):
actorSystem.actorOf(
new Props(
new UntypedActorFactory() {
public UntypedActor create() {
/// ????
}
})
);
如何返回先前绑定的演员 A 的实例?
我可能会误解 所暗示的问题????
,但是当您使用 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
此操作,而不仅仅是绑定它。