Как преобразовать объект Employee в объект ученика в списке, используя Java?

1

У меня есть список объектов сотрудника почти 20 объектов в списке

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

и у меня есть почти 14 объектов ученика, или он может содержать пустые в списке

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

Возможно ли преобразовать объекты работника в объект-ученик в списке, т.е. Я хочу, чтобы сотрудник был преобразован в объект-ученик в списке.

  • 0
    Как Employee переводит на Student ?
  • 0
    Пожалуйста, объясните вашу стратегию конверсии.
Показать ещё 1 комментарий
Теги:
list
collections

3 ответа

3

Для этого вам нужно иметь какую-то связь между двумя разными классами 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..
}
  • 0
    но дело в том, что это не должно иметь никакого отношения.
  • 0
    дайте мне знать, если это работает для вас
0

Я хочу, чтобы сотрудник был преобразован в объект-ученик в списке

Поскольку оба являются несовместимыми интерфейсами/классами, следовательно, вам нужен способ его преобразования с минимальными изменениями в коде.

Шаблон проектирования адаптера может помочь вам в этом случае специально прочитать раздел шаблона адаптера объекта.

Подробнее Шаблон адаптера - GOF

Шаблон адаптера представляет собой шаблон проектирования, который используется для связи двух несовместимых типов. Если один класс использует определенный интерфейс, который не реализован другим классом, адаптер действует как переводчик между двумя типами.

Изображение 174551

образец кода:

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;
}
0

Хорошо для долгосрочного решения для вашего случая, просто используйте один класс, который имеет некоторый набор методов и классов, и это будет распространено как для учащихся, так и для студентов и сотрудников. И тогда вы можете делиться всеми соответствующими данными этого класса друг с другом.

  • 0
    Но по какой-то причине он говорит, что не хочет устанавливать какие-либо отношения между классами ..
  • 0
    @ Набин: да, как я уже сказал, класс делится данными только с определенным методом и переменными или для очень простых статических полей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню