ArrayList Size为零 - 从其他类访问

时间:2014-11-07 09:16:40

标签: java arraylist static

我有两个文件TestingArrayList.javaArrayListClass。我正在尝试从ArrayList object课程中访问ArrayListClass中创建的TestingArrayList。即使列表填充在ArrayListClass中。来自size()的ArrayList对象的TestingArrayList方法正在返回zero

TestingArrayList.java

class TestingArrayList {

    public static void main(String[] args) {
        System.out.println(ArrayListClass.justList.size());
    }

}

ArrayListClass.java

import java.util.*;

public class ArrayListClass {

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

    public static void main(String[] args) {
        justList.add("I am working ");
        while(true);
    }
}

如何从其他类有效地访问ArrayList?我是否适当地处理了ArrayList,或者这有什么问题吗?

3 个答案:

答案 0 :(得分:2)

如果启动两个main方法,那么您将启动两个单独的虚拟机。两个VM都有自己的对象和静态变量。

如果你想同时运行两个main方法,你可能想要这样的东西:

public static void main(String[] args) {
    new Thread() { run() { 
        ArrayListClass.main(null);
    }}.start();

    new Thread() { run() { 
        TestingArrayList.main(null);
    }}.start();
}

仅启动此main

答案 1 :(得分:0)

您需要初始化列表,以使其实际上与null

不同
public static void main(String args[]) {
    System.out.println(ArrayListClass.justList.size()); // ArrayListClass has nothing initilized in it.
}

现在你需要初始化一个静态列表! (Static Initialization Blocks) 对于那个附加在你的ArrayListClass ann initlaisation

static{
        System.out.println("Init list here"); // this one is called once only.
    }

详细了解块:http://docs.oracle.com/javase/tutorial/java/javaOO/initial.htmlStatic Initializers And Static Methods In Java

答案 2 :(得分:0)

可能是因为您从TestingArrayList.java运行主方法,因此未填充justList。将ArrayListClass.java中的main方法更改为构造函数,然后在调用TestingArrayList.java之前在justList.size() main方法中调用它。