我在列表中有近20个对象的员工对象列表
List<Employee> empList = new ArrayList<Employee>();
我有近14个学生对象,或者列表中可能包含空
List<Student> studentList = new ArrayList<Student>();
是否可以将员工转换为列表中的学生对象,即我希望员工转换为列表中的学生对象。
答案 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可能会帮助您专门阅读对象适配器模式部分。
适配器模式是一种设计模式,用于允许两种不兼容的类型进行通信。如果一个类依赖于另一个类未实现的特定接口,则该适配器将充当两种类型之间的转换器。
示例代码:
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;
}