Shong Studio의 정보 창고

[JAVA] 함수형 인터페이스 (Functional Interface)란? 본문

프로그래밍 언어/Java

[JAVA] 함수형 인터페이스 (Functional Interface)란?

Shong Studio 2024. 3. 10. 18:37
728x90
반응형

함수형 인터페이스(Functional Interface)는 Java 8에서 도입된 개념으로, 단 하나의 추상 메서드만을 가진 인터페이스를 말합니다.

이는 람다 표현식(lambda expression)을 통해 인스턴스화할 수 있으며, 함수형 프로그래밍의 개념을 객체 지향 프로그래밍 언어인 Java에 도입하기 위해 만들어졌습니다.

함수형 인터페이스의 의미

함수형 인터페이스는 그 자체로 인터페이스이지만, 특별히 단 하나의 추상 메서드를 통해 "함수적" 특성을 가지고 있습니다. 이로 인해 람다 표현식이나 메서드 참조를 이용하여 직꽑적, 간결하고 의미있는 코드를 작성할 수 있습니다. 자바는 이런 특성을 활용하여 함수형 프로그래밍 패러다임을 지원합니다.

람다 표현식과 함수형 인터페이스

람다 표현식은 기본적으로 함수형 인터페이스의 인스턴스를 생성하는 방법입니다. 즉, 인터페이스에 정의된 추상 메서드의 구현체를 람다 표현식을 통해 제공하는 것입니다. 람다 표현식은 컴파일 시점에 함수형 인터페이스의 구현체로 변환됩니다.

인터페이스에 여러 메서드가 있을 때

인터페이스에 두 개의 추상 메서드가 있으면, 그 인터페이스는 더 이상 함수형 인터페이스가 아닙니다. 따라서, 람다 표현식을 이용하여 이 인터페이스의 인스턴스를 생성할 수 없습니다. 함수형 인터페이스는 오직 하나의 추상 메서드만을 가져야 람다 표현식을 사용할 수 있습니다.

함수형 인터페이스로 람다 표현식 사용

함수형 인터페이스가 단 하나의 추상 메서드만을 가진다는 점 때문에, 람다 표현식을 사용할 때 어떤 메서드를 구현하고 있는지 명확합니다. 컴파일러는 이 메서드의 시그니처(반환 타입, 매개 변수 타입 등)를 바탕으로 람다 표현식의 타겟 타입을 추론합니다.

만약 인터페이스에 하나 이상의 추상 메서드가 있다면, 해당 인터페이스는 람다 표현식을 사용할 수 있는 대상이 아닙니다. 이 경우, 익명 클래스를 사용하거나, 또는 인터페이스를 함수형 인터페이스로 유지하면서 @FunctionalInterface 어노테이션을 사용하여 컴파일러에게 단 하나의 추상 메서드만이 존재함을 명시적으로 알릴 수 있습니다. 이 어노테이션을 사용하면, 컴파일러가 인터페이스가 함수형 인터페이스 규칙을 준수하는지 검사하게 됩니다.

728x90
반응형

'프로그래밍 언어 > Java' 카테고리의 다른 글

Vscode에서 Java 개발환경 셋업하기  (0) 2024.03.17
[JAVA] Collection과 Stream차이  (0) 2024.03.03
JAVA - Stream 개념 및 사용법  (0) 2024.03.03