【问题标题】:How can I change parameterized type in collection?如何更改集合中的参数化类型?
【发布时间】:2022-12-03 03:17:30
【问题描述】:

我想在我的UserServiceImpl 中使用一种方法中的集合来返回将由UserDTO 参数化的所有用户的列表。 我有以下方法:

@Override
public List<UserEntity> getUsers() {
    var usersList = userRepository.findAll();
    return usersList;
}

但我想将其更改为 public List&lt;UserDTO&gt; getUsers()... 我有从实体到 dto 的 map 方法,反之亦然:

public UserDTO mapToUserDTO(UserEntity userEntity) {
    var userDto = new UserDTO();
    var rolesEntity = userEntity.getRoles().stream()
            .map(RoleEntity::getId)
            .map(String::valueOf)
            .collect(Collectors.toList());
    userDto.setId(userEntity.getId());
    userDto.setUsername(userEntity.getUsername());
    userDto.setName(userEntity.getName());
    userDto.setSurname(userEntity.getSurname());
    userDto.setEmail(userEntity.getEmail());
    userDto.setAge(userEntity.getAge());
    userDto.setRoles(rolesEntity);
    return userDto;
}

但在这种情况下不能应用。 你能帮帮我吗 - 如何在我的方法中将参数化类型从 UserEntity 更改为 UserDTO

【问题讨论】:

    标签: java rest collections stream


    【解决方案1】:

    在用户实体列表上创建流,通过 map() 操作和您共享的方法将每个实体转换为 DTO,并将结果收集到列表中。

    public List<UserEntity> getUsers() {
        
        return userRepository.findAll().stream()
            .map(this::mapToUserDTO)
            .collect(Collectors.toList()); // or .toList() for Java 16+
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-06
      • 2022-01-17
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多