JAVA
Java와 일급 함수
devchive
2023. 9. 18. 18:26
일급함수
프로그래밍 언어는 해당 언어의 함수들이 다른 변수처럼 다루어질 때 일급 함수를 가진다고 합니다. 예를 들어, 일급 함수를 가진 언어에서 함수는 다른 함수들에 전달인자로 제공되고, 다른 함수에 의해 반환될 수 있으며, 변수에 값으로서 할당될 수 있습니다.
일급 객체가 되기위한 충족 조건은 세가지가 있다.
- 변수나 데이터에 할당 할 수 있어야 한다.
- 객체의 인자로 넘길 수 있어야 한다.
- 객체의 리턴값으로 리턴 할 수 있어야 한다.
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));
}
}
함수형 인터페이스를 이용하여 람다식으로 표현해 보았다. 자바는 함수를 일급 객체로 취급하지 않지만 함수형 인터페이스를 통해 마치 변수에 함수를 할당하듯 표현이 가능하다.