2016-09-15 70 views
0

我有一個問題,我創建一個類,並在我的課,我有一些變量,我只是想分配一次,但我想要多個類的實例。例如:防止變量被分配兩次

public class UserHandler{ 

private ArrayList<String> users = new ArrayList<String>(); 

public void addUser(String user) { 
users.add(user) 
} 

} 

這只是一些示例代碼。如果我創建了該類的多個實例,ArrayList是否會多次實例化,或者只是一次?

+3

如果您希望所有實例共享單個ArrayList,請將其設置爲靜態。 – Eran

+0

使用靜態變量。 –

+0

ArrayList將在上面的代碼中多次實例化。如果你想通過你的所有實例共享ArrayList對象,那麼使它靜態爲 – Abhijeet

回答

1

如果作爲

private ArrayList<String> users = new ArrayList<String>(); 

它將爲UserHandler的每個實例創建一次陣列被聲明。

如果更改聲明static

private static ArrayList<String> users = new ArrayList<String>(); 

將創建它只有一次,不同的實例之間共享。


你可以找到更多關於類成員(static關鍵字)here在Oracle的教程:

static關鍵字來創建領域和方法屬於類而不是該類的實例

+0

如果他讓這個靜態變量爲private,那麼他不能從其他類訪問它。 – Abhijeet

+1

@Abhijeet誰說它必須從其他類訪問? –

+1

那麼如果他想創建該類的多個對象。然後,他可能需要靜態對象才能在要實例化的那些類中訪問。 – Abhijeet