Как сравнить две строки на равенство, если они из входных параметров?
Есть метод регистрации. Туда передаются два параметра password и password2 типа String. Мне нужно их сравнить на равность. Я пробовал это сделать через == или 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);
}
Ответы (1 шт):
Автор решения: Kostya
→ Ссылка
Переопределять equals() для String не нужно, он сравнивает строки как нужно. Если он возвращает false, значит строки не равны. Проблема может быть в кодировке. Откуда приходят данные и как они сохраняются в строку?
Когда вы используете == для объектов (String - объект), то сравниваются ссылки на объект.