我有两个文件TestingArrayList.java
和ArrayListClass
。我正在尝试从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,或者这有什么问题吗?
答案 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.html 和Static Initializers And Static Methods In Java
答案 2 :(得分:0)
可能是因为您从TestingArrayList.java
运行主方法,因此未填充justList
。将ArrayListClass.java
中的main方法更改为构造函数,然后在调用TestingArrayList.java
之前在justList.size()
main方法中调用它。