有注册方法。那里传递了两个 String 类型的参数 password 和 password2。我需要比较它们是否相等。我试图通过 == 或 equals() 来完成,但它不起作用。我知道 equals 应该被覆盖,但在这种情况下我该怎么做呢?
// Регистрация
public Customer registration(String name, String lastName, String login, String password, String password2) {
User newUser = new User();
newUser.setRole(User.ROLE_CUSTOMER);
newUser.setName(name);
newUser.setLastName(lastName);
if (!userRepository.existsByLogin(login)) {
newUser.setLogin(login);
} else {
throw new MainIllegalArgument("Пользователем с таким логином уже имеется!");
}
if (password.equals(password2)) { // Делаем проверку, чтобы пароли совпадали
newUser.setPassword(passwordEncoder.encode(password));
} else {
throw new MainIllegalArgument("Пароли не совпадают!");
}
Customer newCustomer = new Customer();
newCustomer.setUser(newUser);
newCustomer.setWallet(0);
userRepository.save(newUser);
return customerRepository.save(newCustomer);
}
您不需要覆盖
equals()forString,它会根据需要比较字符串。如果返回false,则字符串不相等。问题可能出在编码中。数据来自哪里以及如何存储在字符串中?当您对对象使用
==(String-object) 时,会比较对象引用。