使用 Java8 将一个对象映射到另一个对象 (DTO)

Den*_*nov 6 java lambda

你能告诉我是否存在某种漂亮的方法将一个实体对象映射到另一个 dto 对象?当我需要转换为时List<ObjEntity>List<ObjDTO>我创建了该函数:

public class Converter {
public static Function<ObjEntity, ObjDTO> MYOBJ_ENTITY_TO_DTO = objEntity -> {
    ObjDTO dto = new ObjDTO();

    dto.setId(objEntity.getId());
    dto.setName(objEntity.getName());
    dto.setNote(objEntity.getNote());
    // ...

    return dto;
    };
}
Run Code Online (Sandbox Code Playgroud)

我这样使用它:

List<ObjDTO> dtos =  objEntitiesList.stream().map(Converter.MYOBJ_ENTITY_TO_DTO).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但是如果我只需要转换一个对象怎么办?我应该使用该功能MYOBJ_ENTITY_TO_DTO以及如何使用该功能?或者什么是最佳实践?是的,我可以在 Converter 类中执行经典函数,如下所示:

public static ObjEntity dtoToEntity(ObjDTO dto) {
   // map here entity to dto and return entity
}
Run Code Online (Sandbox Code Playgroud)

但这是旧风格。java 8中存在一些新的做法吗?类似于我的 lambda 列表示例?

Ale*_*nov 4

ObjDTO dto = MYOBJ_ENTITY_TO_DTO.apply(entity);
Run Code Online (Sandbox Code Playgroud)

我更经常看到相反的方式:而不是MYOBJ_ENTITY_TO_DTO定义entityToDto为方法并使用

List<ObjDTO> dtos =  objEntitiesList.stream().map(Converter::entityToDto).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

对于列表。