我有一个像这样的课程:

Student
-name
-surname
-address
-number


我有一个DTO,例如:

StudentDTO
-name
-surname
-number


我会将学生班级的姓名,姓氏和数字字段发送到另一个班级(我的意思是不是所有字段都包含在内),我决定将其命名为DTO(我不使用序列化等),只是将班级的对象作为参数发送到其他任何类的方法)。

但是,假设我有这样的代码行:

getAllStudents();


它返回:

List<Student>


但我想将其分配给一个变量:

List<StudentDTO>


我如何轻松转换它们?

PS:我无法更改getAllStudents();方法的内部。我有学生列表,并且想要一种快速且经过精心设计的方法将一个对象列表转换为另一个对象列表。

最佳答案

public StudentDTO convert() {
    StudentDTO newDTO = new StudentDTO(name, surname, number);
    return newDTO;
}


您可以将其实现为公共方法。

显然,这将被抽象为可以进行批处理的更大的convert方法。另一种选择是实现Cloneable并仅为Student-> StudentDTO创建一个特定的实现。

迭代示例:

List<StudentDTO> myList = new ArrayList<>();
    for (Student s : collection) {
        myList.add(s.convert());
    }
    return myList;

09-06 01:56