我想在同一個類中使用另一種方法的一部分,以免在我的代碼中重復幾行。第一種方法是:
protected UserDTO map(UserEntity entity) {
var result = new UserDTO();
var userRoles = entity.getRoles().stream()
.map(RoleEntity::getId)
.map(String::valueOf)
.collect(Collectors.toList());
result.setId(entity.getId().toString());
result.setLastAccessDate(entity.getLastAccessDate());
result.setRoles(userRoles);
if (entity.getEmail() != null) {
var email = new UserDTO.Email(entity.getEmail(), EMAIL_TYPE);
result.setEmails(List.of(email));
}
return result;
}
第二個是:
public UserResource updateUser(String id, UserResource updatedUser) {
var optionalUser = userRepository.findById(Integer.valueOf(updatedUser.getUserName()));
updatedUser.setRoles(optionalUser.get().getRoles()
.stream()
.map(RoleEntity::getId)
.map(String::valueOf)
.collect(Collectors.toList()));
updatedUser.setLastAccessDate(optionalUser.get().getLastAccessDate());
var entity = mapToUserEntity(updatedUser);
userRepository.save(entity);
return updatedUser;
}
所以,我在這兩種方法中都有重復的代碼:
.getRoles()
.stream()
.map(RoleEntity::getId)
.map(String::valueOf)
.collect(Collectors.toList()));
您能給我一條建議嗎?如何在不創建將在上述兩種方法中呼叫的其他方法的情況下簡化它?
uj5u.com熱心網友回復:
您必須創建一個新方法。將它添加到UserEntity類中并將其命名為getRoleIds(). 那么從技術上講,它不會是一個額外的方法呼叫,因為您要替換對 getRoles 的現有呼叫。
前任:
var userRoles = entity.getRoles().stream()
.map(RoleEntity::getId)
.map(String::valueOf)
.collect(Collectors.toList());
變成
var userRoles = entity.getRoleIds();
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/528841.html
標籤:爪哇休息方法压倒一切
