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对象扩展类......
答案 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
....
}