如何在Java中的不同类中使用相同的对象

时间:2011-07-20 12:55:58

标签: java

假设我有3个Java类A,B和C

我需要创建一个在A和B中都使用的C类对象,但是分别创建对象的问题是类c的构造函数被调用了2次。但是我想要只调用一次构造函数。

所以我想将A类中创建的对象用于b类。

4 个答案:

答案 0 :(得分:16)

因此,创建一次对象,并将其传递给A和B的构造函数:

C c = new C();
A a = new A(c);
B b = new B(c);

...

public class A 
{
    private final C c;

    public A(C c)
    {
        this.c = c;
    }
}

请注意,这是非常在Java中常见的依赖注入形式,这样就可以告诉对象他们的协作者而不是自己构建它们。

答案 1 :(得分:3)

在A和B之外创建对象C,并让A和B的构造函数接受C类的实例。

class A {
   public A( C c ) {
       ....
   }
}

class B {
   public B( C c ) {
       ....
   }
}

答案 2 :(得分:2)

或者,如果A和B的构造函数不是彼此接近调用,则可以将C类定义为单例。见http://mindprod.com/jgloss/singleton.html

然后你会这样做:

A a = new A(C.getInstance());
B b = new B(C.getInstance());

或者,在AB的构造函数中,只需调用getInstance而不是构造函数,即。

// C c = new C();
C c = C.getInstance();

答案 3 :(得分:0)

您想分享一个实例吗?好的,他的怎么样:

C c = new C();
B b = new B(c);
A a = new A(c);

另一种选择是:

B b = new B();
A a = new A(b.c);