JAVA

Java와 일급 함수

devchive 2023. 9. 18. 18:26

일급함수

프로그래밍 언어는 해당 언어의 함수들이 다른 변수처럼 다루어질 때 일급 함수를 가진다고 합니다. 예를 들어, 일급 함수를 가진 언어에서 함수는 다른 함수들에 전달인자로 제공되고, 다른 함수에 의해 반환될 수 있으며, 변수에 값으로서 할당될 수 있습니다.

일급 객체가 되기위한 충족 조건은 세가지가 있다.

  1. 변수나 데이터에 할당 할 수 있어야 한다.
  2. 객체의 인자로 넘길 수 있어야 한다.
  3. 객체의 리턴값으로 리턴 할 수 있어야 한다.

Java 에서는 위의 조건을 충족하지 않지만, 람다식을 이용하여 함수의 매개변수로 전달 할 수 있다.

 

함수형 인터페이와 람다

구현해야 할 abstract method를 하나만 갖고 있는 인터페이스를 함수형 인터페이스라고 한다. @FunctionalInterface 어노테이션을 붙여준다. default 또는 static method는 존재해도 된다.

@FunctionalInterface
public interface PlusCalc <T extends Number>{
    T plus(T x, T y);
}

public class FuncInterface {

    public static void main(String[] args) {
        PlusCalc<Integer> plusInt = (a, b) -> a + b;
        System.out.println(plusInt.plus(1,2));
    }
}

함수형 인터페이스를 이용하여 람다식으로 표현해 보았다. 자바는 함수를 일급 객체로 취급하지 않지만 함수형 인터페이스를 통해 마치 변수에 함수를 할당하듯 표현이 가능하다.