添加到静态成员字段

时间:2015-06-28 02:25:50

标签: java static static-methods

我无法理解静态成员字段。我有这段代码:

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))。请帮我理解静态变量和调用。谢谢。

1 个答案:

答案 0 :(得分:3)

您的问题与静态无关,而与您在Stats对象构造函数中创建新的Stats对象有关。此设置将最终创建无限的Stats对象,直到您的堆栈内存不足并且您的程序抛出StackOverflow错误。不要这样做。

可能会添加private

private