如何在Java中使用ArrayList上的自有方法?

时间:2017-12-07 12:53:13

标签: java arraylist

我遇到了一项我必须完成的任务的问题。我需要创建类公司并为Employee类对象编写一些方法(例如,雇用,激活等)。 这些是我的课程和方法:

public class Company{
    ArrayList <Employee> alist= new ArrayList<Employee>();

    public void hire(Employee e) {
        int i=0;
        boolean k=false;
        while(i<alist.size()) {
            if (e.getLastName().equals(alist.get(i).getLastName())) {
                k=true;
                i++;
            }
        }
        if (k==false) alist.add(e);
        else System.out.print("Employee already exists");
    }
}

public class Employee{
    protected String lastname; //protected for subclasses
    protected double jobposition;
    public Employee(String lastname,double jobposition) {
        this.lastname=lastname;
        this.jobposition=jobposition;
    }
    public String getLastName() {
        return lastname;
}

扩展Employee的子类:

public class OfficeWorker extends Employee {
    float pay, bonus;
    public OfficeWorker(String lastname,double jobposition,float pay,float bonus) {
        super(lastname,jobposition);
        this.pay=pay;
        this.bonus=bonus;
    }
}

我想使用ArrayList执行此操作,但它在主类中崩溃并且我收到消息“方法雇用(Employee)未定义类型ArrayList”:

public static void main(String[]args) {

    ArrayList <Employee> list = new ArrayList <Employee>();
    Employee e1 = new OfficeWorker("Smith",0.5,2000,50);
    list.hire(e1);

}

为什么我不能这样做呢?

4 个答案:

答案 0 :(得分:0)

发生的事情是你正在将方法直接调用到ArrayList对象,而不是那个,创建一个名为Company的对象,然后,一旦它被创建,在公司中调用hire的方法,因为Company已经拥有ArrayList的属性。

public static void main(String[]args) {
    Company company = new Company();
    Employee e1 = new OfficeWorker("Smith",0.5,2000,50);
    company.hire(e1);
}

希望它有所帮助!

答案 1 :(得分:0)

您的主要方法应该是:

public static void main(String[]args) {

    Company company = new Company();
    Employee e1 = new OfficeWorker("Smith",0.5,2000,50);
    company.hire(e1);
}

由于您已在课程hire()中编写方法Company,因此Employee中添加了ArrayList <Employee> alist

没有办法在Java ArrayList类中创建自己的方法。

答案 2 :(得分:0)

ArrayList list = new ArrayList(); ArrayList没有雇佣方法。 在类中,您可以访问该方法中可用的方法。这也取决于访问修饰符以及您接受该方法的位置。

要访问非静态公共方法,您必须在该对象上创建对象和调用方法

SomeClass c=new SomeClass();
c.m();

对于静态公共方法,您可以直接调用

SomeClass.m();

答案 3 :(得分:0)

hire()方法被定义为公司类的一部分。 它应该如下。

  function get_last($id) {
    $this->db->select("id, to_char(dataman, 'DD/MM/YYYY') as start_date");
    $this->db->where ( "id", $id);      
    return $this->db->get ('table_x')->row_array ();
  }