无法对非静态类成员进行静态引用

时间:2014-10-31 02:07:26

标签: java reference static non-static

在下面的课程中,我有一个非静态的ArrayList。我正在add()上进行非静态方法调用(ArrayList)。但是我的IDE告诉我正在进行静态调用(Cannot make a static reference to the non-static field arrayList)。

import java.util.ArrayList;

public class Test {
    private ArrayList<String> arrayList = new ArrayList<String>();

    public static void main(String[] args) {
        arrayList.add("str");
    }
}

为什么不允许这样做?如果我在静态方法(main)中声明ArrayList,它就可以工作。但我不明白为什么该方法会影响在非静态变量上调用非静态方法的能力。

编辑:我知道如何解决这个问题...我的问题是,为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

应该是:

private static ArrayList

不使变量静态并且在静态方法中使用它是不可接受的,因为类中的非静态变量需要初始化类/变量。

您可以使用构造函数创建一个单独的类,并且如果您想以这种方式使用它,则实例化该对象......无论出于何种原因。

或者,您可以在添加构造函数后在静态方法中初始化类。

更多信息/重复问题:

What does the 'static' keyword do in a class?