我无法理解静态成员字段。我有这段代码:
Stats.java
private static List<Stats> staTest = new ArrayList<Stats>();
private String test, test2;
public Stats() {
staTest.add(new Stats("foo", "bar"));
}
public Stats(String de, String mo) {
staTest.add(new Stats(de, mo));
}
public String getTest(int i) {
return staTest.get(i).test;
}
public void setTest(String t, int i) {
staTest.get(i).test = t;
}
在我的另一堂课中:
private String foo, bar;
Stats sta;
public void something(String f, String b)
{
sta = new Stats(f, b);
}
我在此行收到StackOverflow错误:staTest.add(new Stats(de,mo))。请帮我理解静态变量和调用。谢谢。
答案 0 :(得分:3)
您的问题与静态无关,而与您在Stats对象构造函数中创建新的Stats对象有关。此设置将最终创建无限的Stats对象,直到您的堆栈内存不足并且您的程序抛出StackOverflow错误。不要这样做。
可能会添加private
private