0

我有 3 节课:-

Tell - 主程序
Item - 单独的电话簿项目
Directory - 存储所有项目的目录对象。


我正在尝试做的是在目录中创建一个数组列表,该列表存储来自项目类的对象,这就是我正在做的事情。

从 Tell 开始,我将方法调用为:-

Directory.add(name, telNo);

目录类:-

public class Directory
{
    ArrayList<Entry> entries = new ArrayList<Entry>();
    // Add an entry to theDirectory
    public static void add(String name, String telNo)      
    {
         entries.add(new Entry(name, telNo));
    }
}

入学等级:-

public class Entry
{
    String name;
    String telNo;
    public TelEntry(String aName, String aTelNo )
    {
        setNumber(aTelNo);
        setName(aName);
    }

    private void setNumber(String aTelNo)
    {
        telNo = aTelNo;
    }
    private void setName(String aName)
    {
        name = aName;
    }

}

但是我的程序没有编译,它显示这个错误: -

"non-static variable entries cannot be referenced from a static context" 

谁能解释我做错了什么?

4

2 回答 2

2

您需要在类中将ArrayListDirectory声明为静态,因为您是从静态上下文(您的add方法)中使用它的。而且您也可以制作它private,因为您的字段应该是私有的,并提供public访问它的访问器方法。

private static ArrayList<Entry> entries = new ArrayList<Entry>();

您只能从静态上下文访问静态变量。因为,非静态变量需要使用您的类的实例,并且在静态上下文中没有可用的实例,因此您不能使用它们。

于 2012-10-27T13:19:56.483 回答
2

声明entries static。您只能访问静态上下文中的静态变量。

static ArrayList<Entry> entries = new ArrayList<Entry>();
于 2012-10-27T13:20:08.653 回答