作为参数的类的ArrayList

时间:2014-08-11 18:49:35

标签: java list inheritance arraylist constructor

StackPeople,我有一个问题。什么语句可以帮助我在将它插入ArrayList之前实现正确的类。我已经宣布Nurse和Pilot是Employees对象。 我希望我的类ArrEmp的每个实现都存储不同的Employees对象 例如:arrEmpNurses,arrEmpPilots,...在我的类在构造函数中获取示例之后 什么声明有帮助?或者我应该重新考虑问题。 谢谢你的帮助。

问题是用正确的类填充阵列(它将从平面文本及其新闻中读取,以便通知其添加类别)

"此代码编译,只需复制粘贴。"

import java.util.*;

public class ArrEmp {
String[][] data={ {"E1"}, {"Maria"}, {"E2"}, {"John"} }; //Data 
Employee x;
static Nurse nancy= new Nurse("01","Nancy");//this are just examples
static Pilot peter= new Pilot("02","Peter");//so the arrayEmp knows what type of employee create
ArrayList arr;

public ArrEmp(Employee x){
    this.x=x;
    arr= new ArrayList();
    fillList();//with data array
}

public void fillList(){// I would like to fill the List with Nurses. How could i do it?
    //for( String[] param: data )
        //arr.add(  ) //insert helpfull statement here
    //the goal is to have an array of Pilot and another of Nurses

}

public static void main(String[] args) {

     ArrEmp arr1= new ArrEmp( nancy );

     ArrEmp arr2= new ArrEmp( peter );
}

public static class Employee {
    String cod;

    public Employee(String cod){
        this.cod=cod;
    }
}

public static class Nurse extends Employee{
    String name;

    public Nurse(String ... para){
        super(para[0]);
        this.name=para[1];
    }
}

public static class Pilot extends Employee{
    String name;

    public Pilot(String ... para){
        super(para[0]);
        this.name=para[1];
    }
}   
}

我这样问了这个问题,因为数据实际上是从磁盘上读取的,ArrEmp不知道他正在读什么员工。我需要提供一个示例,以便构建正确的员工,然后将其插入到数组中。所以new ArrEmp( nancy )读取文件并构建护士并存储它们,但new ArrEmp( nancy )读取文件并加载飞行员。

编辑解决方案:我将创建一个通用的ARRAYLIST扩展员工,并为每个Emlployee对象扩展类......

2 个答案:

答案 0 :(得分:2)

为什么不使用泛型?请参阅:Java generics - ArrayList initialization

基本上使用

ArrayList<Nurse>

而不是说ArrayEmp(南希)说它只包含护士,那么该语言将负责执行它。

答案 1 :(得分:0)

public static class Employee {
    String name;
    int ID = 0;
    public Employee(String name){
        this.name = name;
    }
}

只是使用ID来表示所有这些之间的区别?您可以创建一个ENUM并填写清晰的名称,以区分不同的对象。它比字符串比较和使用instanceOf更快。

public static class Pilot extends Employee{
    int ID = 1;

    public Pilot(String name){
        this.name = name;
    }
}   

修改

public ArrEmp(Employee x){
    if (x.ID == 1) // add to the list you want 
    else if (x.ID == 2) // add to list you want
     .... 
}