我是JAVA的新手,我面临着一个初学者的问题,我知道:-P
IN PLAIN ENGLISH =>我正在尝试创建一个对象的ArrayList,并在需要时在数组中添加新对象。
好的,所以这是我的代码的紧凑版本
package ACP.Employee; //created package
import java.util.ArrayList; //imported arraylist class
import ACP.Employee.EmployeeClass; //imported employee class of same package
public class ClientClass
{
ArrayList<EmployeeClass> empArray = new ArrayList<EmployeeClass>(); //created a new Array List
public static void main (String[] args)
{
int objcount = 0; //variable to store objct count
empArray.add(objcount, EmployeeClass obj);
}
}
IDE(Eclipse)在 empArray.add 行上给出了以下错误
我还尝试用以下语法替换该行,
empArray.add(new EmployeeClass());
但是仍然存在以下错误。
请在这里帮忙,我已经看过了Array Spec的ArrayList的add()方法,它遵循:::
void add(int index,Object element)==&gt;&gt;将指定元素插入列表中的指定位置索引 boolean add(Object o)==&gt;&gt;将指定的元素追加到此列表的末尾。 来源(http://www.tutorialspoint.com/java/java_arraylist_class.htm)
答案 0 :(得分:2)
您的代码存在两个问题。
您正尝试从静态上下文(main)访问类ClientClass
的成员。只有该成员是静态的,才有可能。由于empArray
没有modifiers,因此默认为package-private,这不是静态的。您必须通过将其声明为静态来使其在静态上下文中可访问:
static ArrayList<EmployeeClass> empArray = new ArrayList<>();
或创建ClientClass的实例并访问其成员
ArrayList<EmployeeClass> empArray = new ArrayList<EmployeeClass>();
public static void main(String[] args) {
ClientClass t = new ClientClass();
t.empArray.add(new Employee());
}
将员工传递到要添加的列表的方式不会在java中编译。这是关于如何在java中创建对象的good tutorial。事实上,你似乎是Java新手,所以我建议你从第一页的教程开始,它们非常适合快速熟悉这门语言,你很快就会有所作为。
答案 1 :(得分:1)
从static
方法,您只能访问static
字段
从not-static
方法,您可以访问所有字段
E.g
private int i = 0;
private static int j = 0;
public void increment()
{
i++; // correct
j++; // correct
}
public static void staticIncrement()
{
i++; // compilation error
j++; // correct
}
因此,在您的示例中,empArray
应为static
。
public class ClientClass
{
static ArrayList<EmployeeClass> empArray = new ArrayList<EmployeeClass>();
public static void main (String[] args)
{
int objcount = 0; //variable to store objct count
empArray.add(objcount, new EmployeeClass());
empArray.add(new EmployeeClass());
}
}