4

我是 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 进行静态引用
  • EmployeeClass 无法解析为变量
  • 标记 obj 上的语法错误,删除此标记。

我还尝试用以下语法替换该行,

empArray.add(new EmployeeClass());

但是以下错误仍然存​​在。

  • 无法对非静态 empArray 进行静态引用

请在这里提供帮助,我已经看到了 ArrayList 的 add() 方法的 API 规范,如下所示:::

void add(int index, Object element) ==>> 在列表中的指定位置索引处插入指定元素 boolean add(Object o) ==>> 将指定元素附加到此列表的末尾。来源(http://www.tutorialspoint.com/java/java_arraylist_class.htm

4

2 回答 2

3

您的代码有两个问题。

  1. 您正在尝试ClientClass从静态上下文(主)访问该类的成员。仅当该成员是静态的时才有可能。由于empArray没有修饰符,它将默认为非静态的包私有。您要么必须通过将其声明为静态来使其在静态上下文中可访问:

    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());
    
    }
    
  2. 您将员工传递到要添加的列表的方式不会在 java 中编译。这是一个关于如何在java中创建对象的好教程。实际上,您似乎是 Java 新手,所以我建议您从教程的第一页开始,它们非常有助于快速熟悉该语言,并且您将很快提高工作效率。

于 2013-10-22T20:42:38.437 回答
1

static方法您只能访问static字段。
not-static方法您可以访问所有字段。
例如

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());
    }
}
于 2013-10-22T20:44:55.997 回答