Java 在GUI初始化中使用以前注入的绑定

Java 在GUI初始化中使用以前注入的绑定,java,guice,actor,akka,Java,Guice,Actor,Akka,我需要解决这个奇怪的任务:我有一个类,它是由Guice创建的: bind(A.class) 但稍后我需要用类A初始化Actor(本质上是Actor): 如何返回以前绑定的actor A的实例?我可能误解了??所暗示的问题,但在使用Guice时,通常会尝试避免更新很多对象。当您需要一个由Guice管理的新对象时,只需请求该类型的提供程序。即使您没有为它编写一个提供程序,也有一个隐式提供程序,其中Guice或者为它绑定的范围恢复对象,或者为您提供一个新的提供程序,其中包含它需要的注入对象 它可能看

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

bind(A.class)
但稍后我需要用类A初始化Actor(本质上是Actor):


如何返回以前绑定的actor 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();
        }
      })
    );
  }
}
class这是什么{
私人供应商提供服务;
@注入
公共WhateverClassThis(提供商提供){
this.providesA=providesA;
}
公共WhateverMethodThis(){
actorSystem.actorOf(
新道具(
新的非类型DactorFactory(){
公共非类型转换器create(){
///翻译:我需要一个物体。
A=providesA.get();
}
})
);
}
}
如果可以编辑其他类类型,则可以替换为注入其构造函数/方法所需的对象,从而消除对新类的更多使用


另一方面,如果您说要获得正确的
A
类型,您需要执行此
actorSystem.actorOf
调用,那么您需要为
A
实现一个提供程序,而不是仅仅绑定它。

我认为您的问题不清楚,请您更精确一点好吗?除此之外,它是否与您使用的Actor/Akka有关?它和这个问题有联系吗?我认为它与阿克卡没有严格的关系。假设类A有这样的构造函数“public A(B instanceB,C instanceC){}”,并且在GUI中的某个地方创建了B和C的实例。我需要的是在实例创建之后获取对它的引用,以便对它做一些事情(比如调用一些方法或在某个注册表中注册它)。我通过创建额外的类BootStrap解决了这个问题,它将A作为它自己的构造函数的参数,并且在构造函数中它做了一些有用的事情。但这似乎是一个蹩脚的解决方案。对不起……还是让人困惑。也许更多:)。我以为是我,但似乎没人能用这几条信息回答你。请编辑您的问题,并给出一个真实的例子,说明您希望实现的目标以及您迄今为止所做的尝试。我想(我认为)你的问题可以通过Guice提供者或辅助注入机制简单地解决(你看过吗?),但由于我仍然不理解你100%的解释,所以很难给出答案。
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();
        }
      })
    );
  }
}