[java] 함수형 인터페이스를 사용하여 유효성 검사를 수행하는 방법은 어떻게 되나요?

함수형 인터페이스는 단일 추상 메소드(SAM)를 가지고 있는 인터페이스입니다. Java 8부터는 람다식과 함수형 인터페이스를 활용하여 간편하게 유효성 검사를 수행할 수 있습니다.

아래는 유효성 검사를 위해 함수형 인터페이스를 사용하는 예시입니다.

@FunctionalInterface
public interface Validator<T> {
    boolean validate(T value);
}
public class User {
    private String name;
    private int age;
    
    // 생성자, 게터, 세터 등 생략
    
    public static void main(String[] args) {
        User user = new User("John", 30);
        
        // 이름이 3글자 이상인지 검사하는 함수형 인터페이스
        Validator<String> nameValidator = (value) -> value.length() >= 3;
        
        // 나이가 18세 이상인지 검사하는 함수형 인터페이스
        Validator<Integer> ageValidator = (value) -> value >= 18;
        
        // 유효성 검사 수행
        if (nameValidator.validate(user.getName())) {
            System.out.println("이름이 유효합니다.");
        } else {
            System.out.println("이름이 유효하지 않습니다.");
        }
        
        if (ageValidator.validate(user.getAge())) {
            System.out.println("나이가 유효합니다.");
        } else {
            System.out.println("나이가 유효하지 않습니다.");
        }
    }
}

위 예시에서는 Validator라는 함수형 인터페이스를 정의하여 이름과 나이의 유효성 검사를 수행하고 있습니다. validate 메소드를 오버라이드하여 각각의 검사 조건을 구현하였습니다.

이런식으로 함수형 인터페이스를 활용하면 유효성 검사와 같은 간단한 로직을 람다식으로 표현할 수 있고, 코드의 가독성과 유지보수성을 개선할 수 있습니다.