我有3个班级: -
告诉 - 主程序
项目 - 个人电话簿项目
目录 - 存储所有项目的目录对象。
我要做的是在目录中创建一个数组列表,用于存储项类中的对象,这就是我正在做的事情。
来自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"
有谁能解释我做错了什么?
答案 0 :(得分:2)
您需要将Directory
类中的 ArrayList 声明为静态,因为您是从静态上下文中使用它 - 您的 {{1} } 方法。此外,您可以将其设为add
,因为您的字段应为私有字段,并提供private
访问者方法来访问它。
public
您只能从静态上下文访问静态变量。因为,非静态变量需要使用您的类的实例,并且静态上下文中没有可用的实例,因此您无法使用它们。
答案 1 :(得分:2)
声明entries
static
。您只能访问静态上下文中的静态变量。
static ArrayList<Entry> entries = new ArrayList<Entry>();