我正在尝试创建一个具有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?
答案 0 :(得分:0)
看起来你可能想要一个单身人士。你可以谷歌如何实现它。例如,创建一个枚举表,其中只有一个枚举,您可以在其中提供访问arraylist的方法。
完成此操作后。您可以在两个班级中安全地使用它。
希望它有所帮助。
答案 1 :(得分:0)
您的方法无效。静态变量是类变量。因此,Total类的所有实例将共享相同的ArrayList,同样,Selection的所有实例将共享相同的(引用)ArrayList,但是Total的实例将引用与Selection实例不同的ArrayList。
那是满口的。但是你需要做的是将ArrayList的相同实例传递给每个类,通过它们的构造函数或通过setter方法。或者,您可以从另一个类获得一个静态方法,该方法返回与ArrayList相同的引用。
重要的一点是,你误解了static
的含义。此外,您要问的是依赖注入。已经开发了整个框架来解决这个问题,Java中最流行的例子是Spring框架。使用框架对你的要求来说可能是一种过度杀伤,但我只是想让你知道。