Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在GoogleGuice中重用对象的现有实例?_Java_Guice - Fatal编程技术网

Java 如何在GoogleGuice中重用对象的现有实例?

Java 如何在GoogleGuice中重用对象的现有实例?,java,guice,Java,Guice,我是谷歌Guice的新手。到目前为止,似乎每次创建新绑定时,都会创建一个新对象。如果在两个不同的类中有两个相同的对象作为构造函数参数(或字段等),如何将该对象的第一个实例重用为第二个对象的构造函数参数?例如: 公共接口MyInterfaceA{ //方法声明 } 公共类MyClassA实现MyInterfaceA{ 私人MyInterfaceC myField; @注入 公共MyClassA(MyInterfaceC myField){ this.myField=myField; } //方法

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

公共接口MyInterfaceA{
//方法声明
}
公共类MyClassA实现MyInterfaceA{
私人MyInterfaceC myField;
@注入
公共MyClassA(MyInterfaceC myField){
this.myField=myField;
}
//方法等。
}
公共接口MyInterfaceB{
//方法声明
}
公共类MyClassB实现MyInterfaceB{
私人MyInterfaceC myField;
@注入
公共MyClassB(MyInterfaceC myField){
this.myField=myField;
}
//方法等。
}
公共接口MyInterfaceC{
//方法声明
}
公共类MyClassC实现MyInterfaceC{
@注入
公共MyClassC(){
//实施
}
//方法等。
}
公共类MyModule扩展了AbstractModule{
@凌驾
受保护的void configure(){
绑定(MyInterfaceA.class).to(MyClassA.class);
绑定(MyInterfaceB.class.)到(MyClassB.class);
绑定(MyInterfaceC.class).to(MyClassC.class);
}
}

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

由于@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);
    }
}

使
MyClassC
a
@Singleton