我需要解决奇怪的任务:我有 A 类,它是由 Guice 创建的:
bind(A.class)
但稍后我需要使用 A 类(本质上就是 Actor)来初始化 Actor:
actorSystem.actorOf(
new Props(
new UntypedActorFactory() {
public UntypedActor create() {
/// ????
}
})
);
如何返回先前绑定(bind)的参与者 A 的实例?
最佳答案
我可能误解了 ????
所暗示的问题,但是当您使用 Guice 时,您通常会尝试避免更新大量对象。当您需要由 Guice 管理的新对象时,您只需请求该类型的提供者即可。即使您没有为其编写提供程序,也有一个隐式提供程序,Guice 可以在其中重复使用其绑定(bind)范围内的对象,或者为您提供一个包含所需注入(inject)对象的新提供程序。
它可能看起来像:
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();
}
})
);
}
}
如果您可以编辑其他类类型,则可以注入(inject)其构造函数/方法所需的对象,从而消除更多 new 的使用。
另一方面,如果您说要获得正确类型的 A
,您需要执行此 actorSystem.actorOf
调用,那么您需要实现一个提供程序A
执行此操作而不是仅仅绑定(bind)它。
关于java - 在 Guice 初始化中使用先前注入(inject)的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11119010/