내가해야 할 일에 문제가 있습니다. 클래스 회사를 만들고 Employee 클래스 객체에 대한 몇 가지 메소드 (예 : 고용, 화재 등)를 작성해야합니다.Java의 ArrayList에서 자체 메서드를 사용하는 방법은 무엇입니까?
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;
}
그리고 직원 확장 서브 클래스 : 그 내 클래스와 메소드입니다
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);
}
이렇게 할 수없는 이유는 무엇입니까?
작성한'hire' 메소드는'Company' 클래스에 있습니다. 왜 그것이'ArrayList <>'에있을 것으로 기대합니까? 이것이 무엇을 기대합니까? – David
'회사'는 채용을 수행하는 클래스입니다. 직원을 목록에 추가 하시겠습니까? 그렇다면'list.add (e1)'로 끝난다. 당신이 정말로 가고있는 것이'Employee e1'을 고용 한'Company'를 만들고 그것을'Company' 인스턴스로 만든'ArrayList'에 추가하는 것입니다. – birryree
'Company comp = new Company();와 같이'Company'의 인스턴스를 만들고'comp.hire (e1); '를 사용하여 Employee를 추가하십시오. 회사 클래스에 직원을 저장하는 목록이 이미 있습니다. – VPK