2011-10-12 23 views
5

這可能是一個愚蠢的問題,但我不知道它的答案,我不知道在哪裏搜索答案,所以如果有人可以幫助我會很好。Java:在各種其他類中使用同一個類的實例

我有一個類(讓它命名爲A)與不同的成員和方法。我在另一個類中使用這個類的方法(讓它命名爲B)。

對於創建的每個B對象,我想使用A的SAME實例。那可能嗎? 其實我在B中有一個構造函數,我叫A a = new A();當然,我總是會得到這個班的不同實例。

我該如何改變這種情況?我知道可以用spring框架來解決它(總是將相同的對象注入到B的實例中),但是我不能使用它。如何解決這個問題呢?

非常感謝您的幫助! :-)

+0

非常感謝所有你的答案! :-) – nano7

回答

6

是的可能。您需要定義一個靜態的classA的單例實例,並在任何需要的地方使用它。

所以有這樣的多種方式:

public class ClassA { 
    public static ClassA classAInstance = new ClassA(); 

} 

那麼任何地方,你可以做

ClassA.classAInstance.whatever(); 

這很簡單,但它可能對你是足夠的。

如果您確實想要使用單例模式,請查看here以獲取Java示例。這種方法的優點是它確保你只有1個classA實例。

0

只要使用一個靜態類,並確保它是公共的。

2

這聽起來像你可能想A是Singleton

在軟件工程中,單例模式是一種設計模式,用於通過將類的實例化限制爲一個對象來實現單例的數學概念。

這意味着現有的代碼將不得不修改爲使用某種getInstance()方法,但一旦這種變化已經取得B類的所有實例都將使用A類的一個實例

這裏直接鏈接到:simplest example from the above site.

4

爲了詳細說明其他答案:

public class A 
{ 
private static A instance; 
private A() 
{ 
    ... 
} 

public static A getInstance() 
{ 
    if (instance == null) 
     instance = new A(); 

    return instance; 
} 
... 
public void doSomething() 
{ 
    ... 
} 
} 

然後B中這樣的呼籲:

A.getInstance().doSomething(); 
0

雖然你可以使用Singleton設計模式共享同一個實例的每個時間,但如果你想使用的參數相同的情況下(重載的構造函數)..你不能使用辛格爾頓

相關問題