如何将预构建的实例传递给 guice 中的提供者?

How do I pass a pre-constructed instance to a provider in guice?

我明白如果我们需要告诉 guice 我们需要一个特定的实例绑定到一个类型,我们使用提供者接口 a 到 return 一个新构造的对象...所以提供者就像一个工厂.

在我看到的所有示例中,供应商本身根据编译时的一些信息计算出要 return 的内容。

如何向提供者传递一个由我无法控制的其他方式创建的对象?

-- 编辑:Olivier 的第一个解决方案的以下修改是可接受的使用模式吗?

public class FrameworkModule extends AbstractModule {

  private static instance; 
  public FrameworkModule(FrameworkImplementation instanceCreatedbyFramework) {
     instance=instanceCreatedbyFramework;
  }

  protected void configure() {}

  @Provides
  @Singleton
  FrameworkInterface provideFrameworkInterface() { //this method does not have information to create and in initialize instance. The Framework get initialized first and already creates the instance object. I have the ability to construct guice bindings module after framework is initialized
    return instance;
  }
}

有几种方法可以做到这一点。

使用提供方法

public class FrameworkModule extends AbstractModule {
  protected void configure() {}

  @Provides
  @Singleton
  FrameworkInterface provideFrameworkInterface() {
    FrameworkImplementation instance = Framework.newInstance();
    instance.initialize();
    return instance;
  }
}

使用标准声明

public class FrameworkModule extends AbstractModule {
  protected void configure() {
    FrameworkImplementation instance = Framework.newInstance();
    instance.initialize();
    bind(FrameworkInterface.class).toInstance(instance);
  }
}

使用供应商:

public class FrameworkModule extends AbstractModule {
  protected void configure() {
    FrameworkImplementation instance = Framework.newInstance();
    Provider<FrameworkInterface> provider = () -> instance;
    bind(FrameworkInterface.class).toProvider(provider);
  }
}  

问题是你的问题可能太模糊了,如果这个答案没有帮助,请完善你的问题,以便我可以编辑这个答案。