如何在GUI中的类之间共享ArrayList <string>?</string>

时间:2014-03-04 03:07:53

标签: java class arraylist

我正在尝试创建一个具有ArrayList List的GUI,它需要在类之间共享:

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?

2 个答案:

答案 0 :(得分:0)

看起来你可能想要一个单身人士。你可以谷歌如何实现它。例如,创建一个枚举表,其中只有一个枚举,您可以在其中提供访问arraylist的方法。

完成此操作后。您可以在两个班级中安全地使用它。

希望它有所帮助。

答案 1 :(得分:0)

您的方法无效。静态变量是类变量。因此,Total类的所有实例将共享相同的ArrayList,同样,Selection的所有实例将共享相同的(引用)ArrayList,但是Total的实例将引用与Selection实例不同的ArrayList。

那是满口的。但是你需要做的是将ArrayList的相同实例传递给每个类,通过它们的构造函数或通过setter方法。或者,您可以从另一个类获得一个静态方法,该方法返回与ArrayList相同的引用。

重要的一点是,你误解了static的含义。此外,您要问的是依赖注入。已经开发了整个框架来解决这个问题,Java中最流行的例子是Spring框架。使用框架对你的要求来说可能是一种过度杀伤,但我只是想让你知道。