Languages/Java

[Java]함수형 인터페이스(Functional Interface) 사용해보기

MoonSta 2023. 2. 8. 10:46

📌함수형 인터페이스(Functional Interface) 사용해보기

  함수형 프로그래밍(Functional Programming)은 순수 함수들로 조합하여 기본 원칙에 따라 소프트웨어를 구성하는 것을 말합니다. 쉽게 말하면 프로그래밍의 상태, 상태를 변경시키는 구문의 관점에서 연산을 설명하는 명령형 프로그래밍이 아닌, 결과에 중점을 두고 필요한 것을 추출하기 위해 구조를 세워나가는 선언형 프로그래밍을 따른다. JAVA 8 버전 이 후로 함수형 인터페이스와 람다의 도입으로 함수형 프로그래밍이 가능하게 되었지만, 완전한 함수형 프로그래밍이라고 볼수는 없다. 

 

 

📌프로그래밍 패러다임

 프로그래밍 패러다임란 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 한다. 각 프로그래밍 언어들을 보면 절차지향, 객체지향 등 각각의 패러다임을 가지고 있다. 하지만 이 패러다임을 모두 따라가진 않는다. 객체지향 프로그래밍이라는 프로그래밍이 있는 JAVA에도 JAVA 8 부터 람다와 함수형 인터페이스의 도입으로 함수형 프로그래밍이 가능하다. 이처럼 패러다임은 근본적으로 규정하고 있는 인식의 체계일 뿐, 모두 따라갈 필요는 없다. 

 

📌함수형 인터페이스(Functional Interface)

  📑JAVA 8 부터 함수형 패러다임으로 전환을 하는 데 있어서 가장 큰 변화가 바로 함수형 인터페이스와 람다의 도입입니다.  코드를 먼저 확인해보겠습니다. 

@FunctionalInterface
public interface FunctionalInterfaceEx {
    void Join(String name);
   
    default void defaultMet() {
        System.out.println("create defaultMet");
    }
}

 

 

📌함수형 인터페이스(Functional Interface)의 특징

  • @FunctionalInterface를 선언하여 사용
  • 추상메서드는 한 개만 사용가능
  • 두 개 이상의 추상 메서드 작성 시 컴파일 에러
  • static, default메서드 작성 가능

 

📌함수형 인터페이스(Functional Interface)의 사용

public class members implements FunctionalInterfaceEx {
    @Override
    public void Join(String name) {
        System.out.println(name);
    }
}
// members 클래스를 만들어 위에 선언한 인터페이스를 상속 받고, 자식이 함수를 오버라이딩 합니다.
public class mainTest {
    public static void main(String[] args) {
        FunctionalInterfaceEx testInterface = new members();
       
       testInterface.join("coin_ju");
        FunctionalInterfaceEx.defaultMet();
    }
}
//coin_ju
//create defaultMet

📑이와 같은 방식으로 함수형 인터페이스에 대한 사용법을 알아보았습니다. 다음에는 람다(lambda)에 대한 내용을 포스팅하도록 하겠습니다.