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

时间:2017-11-16 14:36:50

标签: 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;
    };
}

我这样用它:

List<ObjDTO> dtos =  objEntitiesList.stream().map(Converter.MYOBJ_ENTITY_TO_DTO).collect(Collectors.toList());

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

public static ObjEntity dtoToEntity(ObjDTO dto) {
   // map here entity to dto and return entity
}

但它是旧式的。在Java 8中存在一些新的实践?类似于我的lambda列表示例?

1 个答案:

答案 0 :(得分:1)

ObjDTO dto = MYOBJ_ENTITY_TO_DTO.apply(entity);

我更频繁地看到相反的方式:代替MYOBJ_ENTITY_TO_DTO,将entityToDto定义为方法并使用

List<ObjDTO> dtos =  objEntitiesList.stream().map(Converter::entityToDto).collect(Collectors.toList());

列表。