我遇到了一项我必须完成的任务的问题。我需要创建类公司并为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);
}
为什么我不能这样做呢?
答案 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 ();
}