2014-03-04 22 views
0

我試圖讓有一個ArrayList列表中的一個圖形用戶界面,它需要的類之間共享:如何在GUI中的類之間共享ArraList <String>?

public class Selection extends JPanel 
{ 

public static ArrayList<String> List = new ArrayList<String>(); 

public Selection() 
{ 

//Adding button for user to click. If clicked, a line of text will be 
//added into ArrayList<String> List 

}} //End of the Selection Classes 

這是我希望他們能夠共享同一個ArrayList中

public class Total extends JPanel 
{ 

public static ArrayList<String> List = new ArrayList<String>(); 

public Total() 
{ 

    //Setting up a button for calculating a sum based on the text 
    //in ArrayList<String> List 

}} //End of Total Class 

另一個班組長我試圖做到以下幾點:

public Selection(ArrayList<String> List) 
public Total(ArrayList<String> List) 

但它給了我錯誤。我應該怎麼做才能讓一個ArrayList在兩個或多個類中共享?

+0

首先,你應該使用'Lists '作爲簽名:這將允許你稍後改變實現(當你可以時,總是使用接口作爲簽名,而不是實現) – Gorkk

+0

第二:使用'list'而不是'List'作爲變量名稱,可能是錯誤來源;並給我們提供關於錯誤的更多細節(編譯時間我認爲,但是什麼信息?) – Gorkk

+0

注意:更一般地說,遵循你的方法和變量名稱的java命名約定:它們應該以小寫字符 – Gorkk

回答

0

看起來你可能想要一個單身人士。你可以谷歌如何實施它。例如創建一個枚舉表只有一個枚舉,其中提供了訪問數組列表的方法。

一旦你完成了這一點。你可以安全地在你的課堂上使用它。

希望它有幫助。

0

您的方法不起作用。靜態變量是類變量。因此,Total類的所有實例將共享相同的ArrayList,同樣,Selection的所有實例都將共享相同的(引用)ArrayList,但是 - Total實例將引用不同於Array的實例的ArrayList。

這是一口。但是你需要做的是將相同的ArrayList實例傳遞給每個類,或者通過它們的構造函數或者通過setter方法。或者,您可以從不同的類中返回一個靜態方法,該方法返回與ArrayList相同的引用。

重要的要點是您誤解了static的含義。此外,你問的是依賴注入。已經有整個框架被開發來解決這個問題,Java中最流行的例子是Spring框架。使用框架對你的需求來說可能是過分的,但我只是想讓你知道。

+0

okey ...我將ArrayList orderList移動​​到主方法。然後我將它傳遞給類:public Total(ArrayList List)。而在構造函數的主體中,我做this.orderList = orderList;我仍然無法得到結果。請問我做錯了什麼? – user2789240

+0

@ user2789240嘗試this.orderList = _(NameOfMainClass)_。orderList; – Shrey