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는 추상 메서드가 정확히 하나인지 컴파일러가 검증합니다. default와 static 메서드는 개수 제한 없습니다.
주의할 점
추상 메서드를 2개 이상 선언하면 @FunctionalInterface가 컴파일 에러를 냅니다. Object의 메서드(toString 등)는 제외됩니다.
자주 묻는 질문
함수형 인터페이스 커스텀란 무엇인가요?
@FunctionalInterface 로 커스텀 함수형 인터페이스를 정의합니다.
함수형 인터페이스 커스텀 학습 시 주의할 점은 무엇인가요?
추상 메서드를 2개 이상 선언하면 @FunctionalInterface 가 컴파일 에러를 냅니다. Object 의 메서드(toString 등)는 제외됩니다.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.