PHpullh
학습 라이브러리/Java/함수형 인터페이스 커스텀

JAVA · 기초 문법

함수형 인터페이스 커스텀

@FunctionalInterface로 커스텀 함수형 인터페이스를 정의합니다.

기초 문법중급FunctionalInterface함수형인터페이스default합성

핵심 설명

@FunctionalInterface로 커스텀 함수형 인터페이스를 정의합니다.

Java code

@FunctionalInterface
interface Validator<T> {
    boolean test(T value);

    // default 메서드는 허용
    default Validator<T> and(Validator<T> other) {
        return value -> this.test(value) && other.test(value);
    }

    default Validator<T> or(Validator<T> other) {
        return value -> this.test(value) || other.test(value);
    }

    default Validator<T> negate() {
        return value -> !this.test(value);
    }
}

public class CustomFunctional {
    public static void main(String[] args) {
        Validator<String> notEmpty = s -> !s.isEmpty();
        Validator<String> shortEnough = s -> s.length() <= 20;
        Validator<String> hasAt = s -> s.contains("@");

        // 합성
        Validator<String> emailValidator = notEmpty
            .and(shortEnough)
            .and(hasAt);

        System.out.println(emailValidator.test("a@b.com"));  // true
        System.out.println(emailValidator.test(""));          // false
        System.out.println(emailValidator.test("no-at-sign")); // false
    }
}

학습 팁

@FunctionalInterface는 추상 메서드가 정확히 하나인지 컴파일러가 검증합니다. defaultstatic 메서드는 개수 제한 없습니다.

주의할 점

추상 메서드를 2개 이상 선언하면 @FunctionalInterface가 컴파일 에러를 냅니다. Object의 메서드(toString 등)는 제외됩니다.

자주 묻는 질문

함수형 인터페이스 커스텀란 무엇인가요?

@FunctionalInterface 로 커스텀 함수형 인터페이스를 정의합니다.

함수형 인터페이스 커스텀 학습 시 주의할 점은 무엇인가요?

추상 메서드를 2개 이상 선언하면 @FunctionalInterface 가 컴파일 에러를 냅니다. Object 의 메서드(toString 등)는 제외됩니다.