У меня есть список объектов сотрудника почти 20 объектов в списке
List<Employee> empList = new ArrayList<Employee>();
и у меня есть почти 14 объектов ученика, или он может содержать пустые в списке
List<Student> studentList = new ArrayList<Student>();
Возможно ли преобразовать объекты работника в объект-ученик в списке, т.е. Я хочу, чтобы сотрудник был преобразован в объект-ученик в списке.
Для этого вам нужно иметь какую-то связь между двумя разными классами Employee и Student. Это можно сделать, если вы использовали наследование. Или вам нужно использовать конструктор копирования. Иначе вы просто не можете просто назначить его.
отредактированный
Если нет отношения, попробуйте использовать конструктор копирования. Например:
Student aStudent = new Student(anEmployee);
И в классе Student определите конструктор как:
Student(Employee anEmployee){
this.name = anEmployee.getName();
// and other variables should be initialized
}
И, конечно же, вам понадобится метод getter в классе Employee. В цикле for вы должны сделать это, чтобы создать каждого ученика с соответствующим объектом-учеником, который вам нужно будет добавить в список.
for(Student aStudent:students){
//and do it here..
}
Я хочу, чтобы сотрудник был преобразован в объект-ученик в списке
Поскольку оба являются несовместимыми интерфейсами/классами, следовательно, вам нужен способ его преобразования с минимальными изменениями в коде.
Шаблон проектирования адаптера может помочь вам в этом случае специально прочитать раздел шаблона адаптера объекта.
Подробнее Шаблон адаптера - GOF
Шаблон адаптера представляет собой шаблон проектирования, который используется для связи двух несовместимых типов. Если один класс использует определенный интерфейс, который не реализован другим классом, адаптер действует как переводчик между двумя типами.
образец кода:
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;
}
Хорошо для долгосрочного решения для вашего случая, просто используйте один класс, который имеет некоторый набор методов и классов, и это будет распространено как для учащихся, так и для студентов и сотрудников. И тогда вы можете делиться всеми соответствующими данными этого класса друг с другом.
Employee
переводит наStudent
?