2016-09-15 56 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