添加到静态成员字段

Adding to a static member field

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

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;
}

在我的另一个class:

private String foo, bar;
Stats sta;

public void something(String f, String b)
{
    sta = new Stats(f, b);
}

我在这一行收到 Whosebug 错误:staTest.add(new Stats(de, mo))。请帮助我理解静态变量和调用。谢谢。

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

也许可以添加 this

public Stats() {
    staTest.add(this);
}

public Stats(String de, String mo) {
    this.test = de;
    this.test2 = mo;
    staTest.add(this);
}