将 userdetails 添加到 arr 数组后,所有元素都变为相同的值。请解释一下如何做。
@Autowired UserDto userDto;
public ArrayList getAllUsers() throws commonException {
ArrayList<UserDto> arr = new ArrayList<>();
Iterable<User> user = userRepository.findAll();
for(User userDetails: user){
userDto.setUsername(userDetails.getUsername());
userDto.setEmail(userDetails.getEmail());
userDto.setPassword(userDetails.getPassword());
arr.add(userDto);
}
return arr;
最佳答案
您的代码似乎不完整,因为您从未实际声明变量 userDto
也未对其进行初始化。但是,我怀疑问题的解决方案是确保为循环的每个迭代初始化一个新的 UserDto POJO。像这样的事情:
for (User userDetails: user) {
UserDto userDto = new UserDto(); // CRITICAL
userDto.setUsername(userDetails.getUsername());
userDto.setEmail(userDetails.getEmail());
userDto.setPassword(userDetails.getPassword());
arr.add(userDto);
}
当前您最终获得同一用户的多个副本的原因是您重复使用相同的 UserDto
对象,只是在每次迭代期间更改其值。
关于java - 添加到数组对象更改相同的值java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42503545/