如何使用java将Employee对象转换为列表中的student对象?

时间:2014-08-02 03:05:29

标签: java list collections

我在列表中有近20个对象的员工对象列表

List<Employee> empList = new ArrayList<Employee>();

我有近14个学生对象,或者列表中可能包含空

List<Student> studentList = new ArrayList<Student>();

是否可以将员工转换为列表中的学生对象,即我希望员工转换为列表中的学生对象。

3 个答案:

答案 0 :(得分:3)

为此,您需要在两个不同的类员工学生之间建立某种关系。如果您使用了继承,则可以执行此操作。或者您需要使用复制构造函数。 否则你不能简单地分配它。

<强>被修改

如果没有关系,请尝试使用复制构造函数。 例如:

Student aStudent = new Student(anEmployee);

学生类中,将构造函数定义为:

Student(Employee anEmployee){
this.name = anEmployee.getName();
// and other variables should be initialized
}

当然,您需要在员工类中使用getter方法。 在 for 循环中,您需要执行此操作,这将为每个学生创建您需要在列表中添加的相应学生对象。

for(Student aStudent:students){
//and do it here..
}

答案 1 :(得分:0)

对于您的案例的长期解决方案,只需使用具有一些方法和类的单个类,这对于两者都是常见的,学生员工。然后,您可以相互分享该课程的所有相关数据。

答案 2 :(得分:0)

  

我希望员工在列表中转换为学生对象

由于两者都是不兼容的接口/类,因此您需要一种方法在代码中使用 最小更改 进行转换。

在这种情况下,

Adapter Design Pattern可能会帮助您专门阅读对象适配器模式部分。

了解更多Adapter Pattern - GOF

  

适配器模式是一种设计模式,用于允许两种不兼容的类型进行通信。如果一个类依赖于另一个类未实现的特定接口,则该适配器将充当两种类型之间的转换器。

enter image description here

示例代码:

public List<Student> convert(List<Employee> employee) {
      List<Student> students = new ArrayList<Student>();
      for (Employee  e : employee) {
        // convert employee into student
        Student s = new Student();
        s.setName(e.getName());
        // set more properties
        students.add(s);
      }
      return students;
}