【发布时间】:2013-12-09 22:55:43
【问题描述】:
我有以下课程
import java.util.ArrayList;
import java.util.List;
public class TestStaticArrayList {
public static List<String> numberList = new ArrayList<String>();
public static List<String> getArrayValues(){
return numberList;
}
public static void populateArray() {
numberList.add("1");
numberList.add("2");
numberList.add("3");
}
}
上面类中的静态 ArrayList 是通过下面类的调用动态填充的。
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public class TestStaticInvokationClass {
public static void main(String[] args) throws Exception {
Class staticKlass = Class
.forName("com.sathish.test.TestStaticArrayList");
staticKlass.getMethod("populateArray", null).invoke(null, null);
}
}
我正在尝试访问下面类中的静态 ArrayList。但它总是空的。
public class StaticArrayListAccessTest {
public static void main(String[] args) throws Exception {
System.out.println(TestStaticArrayList.getArrayValues());
}
}
如果我使用一个
static {
...
}
填充 Arraylist 它工作正常。我有一个动态填充 ArrayList 的用例,这意味着我不能使用静态 {..} 块。在这种情况下如何访问静态 ArrayList。
对此的任何帮助表示赞赏。
【问题讨论】:
-
等等,你是在两次不同的时间运行程序吗?你有两种不同的
main方法。 -
是的。首先我运行程序来填充数组列表。然后我尝试访问它。
-
静态初始化块在类初始化时自动运行。这就是为什么如果你使用
static {}你的数组已经被填充了。 -
如果您告诉我们您到底想要达到什么目标也会有所帮助。或者您可能只是在寻找为什么会发生这种行为?
-
请采纳对您最有帮助的答案。请记住,投票并不总是准确反映您作为提问者是否应该接受答案,但它们确实有助于确定这一点,同时知道给定的答案对您有所帮助。
标签: java arraylist static static-methods static-members