EEALL@ONCE
☕ FUNCTIONAL INTERFACE : @FunctionalInterface 본문
Functional Interface는 Java에서 주로 람다 표현식 및 Stream API와 같은 Java 8에서 소개된 기능과 함께 사용되는 핵심 개념입니다. Functional Interface는 하나의 추상 메서드만을 포함하는 인터페이스를 말하며, 람다 표현식을 통해 이를 구현하여 함수형 프로그래밍 개념을 Java에서 사용할 수 있게 해줍니다.
Java에서는 `@FunctionalInterface` 주석을 사용하여 명시적으로 Functional Interface를 선언할 수 있습니다.
@FunctionalInterface
interface MyFunctionalInterface {
void myMethod();
}
그런 다음 람다 표현식을 사용하여 Functional Interface의 추상 메서드를 구현할 수 있습니다.
`
public class Main {
public static void main(String[] args) {
MyFunctionalInterface myFunctionalInterface = () -> {
// 여기에 구현
System.out.println("myMethod 실행 중");
};
// 메서드 호출
myFunctionalInterface.myMethod();
}
}
특히나 자바는 일급객체가 없었는데, JAVA 8 이후 부터는 함수형 인터페이스 도입으로 보완이 가능해졌습니다.
일급 객체(First-class object)는 프로그래밍 언어에서 다음과 같은 특징을 갖는 객체를 말합니다:
1. 변수나 데이터 구조에 할당이 가능하다.
2. 함수의 매개변수로 전달할 수 있다.
3. 함수의 반환 값으로 사용할 수 있다.
이러한 특징을 갖는 객체를 일급 객체라고 부르며, 이 개념은 함수형 프로그래밍과 관련이 깊습니다. 자바스크립트, 파이썬, 자바, 등 다양한 프로그래밍 언어에서 지원하고 있습니다.
예를 들어, 함수를 변수에 할당하고, 다른 함수의 매개변수로 전달하거나 반환 값으로 사용할 수 있다면 해당 함수는 일급 객체로 간주됩니다. 함수형 프로그래밍에서는 이러한 특성을 활용하여 코드를 더 모듈화하고 유연하게 작성할 수 있습니다.
Java에서는 함수가 일급 객체로 취급되지 않는 경우가 있습니다. 하지만 Java 8에서 람다 표현식과 함수형 인터페이스 도입으로 함수형 프로그래밍의 일부 특징을 지원하게 되었습니다. 람다 표현식을 사용하면 함수를 변수에 할당하고, 매개변수로 전달하며, 반환 값으로 사용할 수 있습니다.
'언어💻 > 자바☕' 카테고리의 다른 글
☕Collectors : 유틸리티 클래스 (java stream api) 컬렉션 연산 수행자 (0) | 2023.11.29 |
---|---|
☕ 추상클래스와 인터페이스의 차이는 뭘까? (1) | 2023.11.27 |
☕ final 클래스 / 메소드 / 필드 (0) | 2023.11.14 |
☕ 생성자 (0) | 2023.10.27 |
☕ formatted : 포멧함수 (0) | 2023.10.27 |