[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
메소드를 오버라이드하여 각각의 검사 조건을 구현하였습니다.
이런식으로 함수형 인터페이스를 활용하면 유효성 검사와 같은 간단한 로직을 람다식으로 표현할 수 있고, 코드의 가독성과 유지보수성을 개선할 수 있습니다.