如何在 Google Guice 中重用对象的现有实例?

How do I reuse an existing instance of an object in Google Guice?

我是 Google Guice 的新手。截至目前,似乎每次创建新绑定时,都会创建一个新对象。如果你在两个不同的 类 中有两个相同的对象作为构造函数参数(或字段等),你如何重用对象的第一个实例作为第二个对象的构造函数参数?例如:

public interface MyInterfaceA{
    //Method declarations
}
public class MyClassA implements MyInterfaceA{
    private MyInterfaceC myField;

    @Inject
    public MyClassA(MyInterfaceC myField){
        this.myField = myField;
    }

    //Methods, etc.
}
public interface MyInterfaceB{
    //Method declarations
}
public class MyClassB implements MyInterfaceB{
    private MyInterfaceC myField;

    @Inject
    public MyClassB(MyInterfaceC myField){
        this.myField = myField;
    }

    //Methods, etc.
}
public interface MyInterfaceC{
    //Method declarations
}
public class MyClassC implements MyInterfaceC{

    @Inject
    public MyClassC(){
        //Implementation
    }

    //Methods, etc.
}
public class MyModule extends AbstractModule{
    @Override
    protected void configure(){
        bind(MyInterfaceA.class).to(MyClassA.class);
        bind(MyInterfaceB.class).to(MyClassB.class);
        bind(MyInterfaceC.class).to(MyClassC.class);
    }
}

在这个例子中,我认为 MyClassA 的构造函数是通过 Guice 使用 MyClassC 的新实例调用的,而 MyClassB 的构造函数也是使用 MyClassC 的新实例调用的。我如何首先使用 MyClassC 的新实例调用 MyClassA 的构造函数,然后使用带有 Guice 的同一个 MyClassC 实例调用 MyClassB 的构造函数?

由于@njzk2 已经评论过了,我只是在下面添加代码。这里MyClassC每次注入时都会提供相同的对象实例。

public class MyModule extends AbstractModule{
    @Override
    protected void configure(){
        bind(MyInterfaceA.class).to(MyClassA.class);
        bind(MyInterfaceB.class).to(MyClassB.class);
        bind(MyInterfaceC.class).to(MyClassC.class).in(Singleton.class);
    }
}