Как сравнить две строки на равенство, если они из входных параметров?

Есть метод регистрации. Туда передаются два параметра 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 - объект), то сравниваются ссылки на объект.

→ Ссылка