자바스크립트를 쓰면서 람다식은 익숙한 편이다. 자바에서도 쓰레드를 공부할때 간간히 사용해본 적이 있다. 내가 자바를 처음 배울 땐 Java8 버전이 주류 버전이 된 지 얼마 되지않아, 교재나 수업에서 잘 다루지 않았다. 그 동안 놓친 것을 따라잡아보자.

람다표현식

람다식은 자바8에서 추가되었다. 람다식은 간결하게 익명함수를 제공한다. 람다식은 자바에서 함수형프로그래밍의 개념을 쉽게 사용할 수 있게 해준다.

param -> expession

람다식을 사용하려면 함수형 인터페이스를 이해할 필요가 있다.

함수형 인터페이스

함수형 인터페이스란 Object 클래스의 메서드를 제외(어차피 implements하면 상속될 클래스에서 알아서 구현된다.)하고 단 하나의 추상 메소드를 가지는 인터페이스이다. SAM(Single Abstract Method) Interface라고도 한다. 함수형 인터페이스는 추상 메소드 한개 말고 default 메소드나 static 메소드가 몇개 건 상관없다. 어노테이션으로 @FunctionalInterface 을 가진다.

@FunctionalInterface
interface functionalInterface{
	void method();
}

함수형 인터페이스의 존재 목적는 익명함수(또는 메서드레퍼런스)를 바인딩 하기 위함이다. 이를 통해 코드의 가독성, 간결성이 향상되고, 고차함수를 지원하여 높은 수준의 추상화를 다룰 수 있게 한다.

// 고차 함수 예시
public void process(MyFunctionalInterface func) {
    func.myMethod();
}

process(() -> System.out.println("Processing..."));

기본으로 정의된 함수형 인터페이스

java.util.function