Код IT Загрузка примера кода…

Java main.java

import java.util.Objects;

public final class EmailValidator {

    public static final class ValidationResult {
        private final boolean isValid;
        private final String errorMessage;

        private ValidationResult(boolean isValid, String errorMessage) {
            this.isValid = isValid;
            this.errorMessage = errorMessage;
        }

        public static ValidationResult success() {
            return new ValidationResult(true, null);
        }

        public static ValidationResult error(String message) {
            return new ValidationResult(false, message);
        }

        public boolean isValid() { return isValid; }
        public String errorMessage() { return errorMessage; }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            ValidationResult that = (ValidationResult) o;
            return isValid == that.isValid &&
                   Objects.equals(errorMessage, that.errorMessage);
        }

        @Override
        public int hashCode() {
            return Objects.hash(isValid, errorMessage);
        }
    }

    public static ValidationResult validate(String email) {
        if (email == null || email.trim().isEmpty()) {
            return ValidationResult.error("Email не может быть пустым");
        }

        String[] parts = email.split("@", -1); // -1 сохраняет пустые части
        if (parts.length != 2) {
            return ValidationResult.error("Email должен содержать ровно один символ '@'");
        }

        String local = parts[0];
        String domain = parts[1];

        if (local.isEmpty()) {
            return ValidationResult.error("Локальная часть email не может быть пустой");
        }

        if (domain.isEmpty() || !domain.contains(".") ||
            domain.startsWith(".") || domain.endsWith(".")) {
            return ValidationResult.error("Некорректный домен: должен содержать точку и не начинаться/заканчиваться ею");
        }

        return ValidationResult.success();
    }
}

import java.util.Objects;

public final class EmailValidator {

    public static final class ValidationResult {
        private final boolean isValid;
        private final String errorMessage;

        private ValidationResult(boolean isValid, String errorMessage) {
            this.isValid = isValid;
            this.errorMessage = errorMessage;
        }

        public static ValidationResult success() {
            return new ValidationResult(true, null);
        }

        public static ValidationResult error(String message) {
            return new ValidationResult(false, message);
        }

        public boolean isValid() { return isValid; }
        public String errorMessage() { return errorMessage; }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            ValidationResult that = (ValidationResult) o;
            return isValid == that.isValid &&
                   Objects.equals(errorMessage, that.errorMessage);
        }

        @Override
        public int hashCode() {
            return Objects.hash(isValid, errorMessage);
        }
    }

    public static ValidationResult validate(String email) {
        if (email == null || email.trim().isEmpty()) {
            return ValidationResult.error("Email не может быть пустым");
        }

        String[] parts = email.split("@", -1); // -1 сохраняет пустые части
        if (parts.length != 2) {
            return ValidationResult.error("Email должен содержать ровно один символ '@'");
        }

        String local = parts[0];
        String domain = parts[1];

        if (local.isEmpty()) {
            return ValidationResult.error("Локальная часть email не может быть пустой");
        }

        if (domain.isEmpty() || !domain.contains(".") ||
            domain.startsWith(".") || domain.endsWith(".")) {
            return ValidationResult.error("Некорректный домен: должен содержать точку и не начинаться/заканчиваться ею");
        }

        return ValidationResult.success();
    }
}