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

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

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

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

所以创建一次对象,并将其传递给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中作为dependency injection的一种forms非常常见,因此对象被告知其协作者而不是自己构建它们。

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

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

或者,如果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(); 

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

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

另一种选择是:

 B b = new B(); A a = new A(bc);