2

我需要解决奇怪的任务:我有 A 类,它是由 Guice 创建的:

bind(A.class)

但后来我需要用 A 类初始化 Actor(本质上是 Actor):

actorSystem.actorOf(
  new Props(
    new UntypedActorFactory() {
      public UntypedActor create() {
         /// ????
      }
    })
 );

如何返回先前绑定的演员 A 的实例?

4

1 回答 1

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此操作,而不仅仅是绑定它。

于 2012-06-20T18:50:53.723 回答