자바에서 익명 함수를 간단히 표현하는 문법.
메서드를 식으로 표현한 것 이라는 표현이 흔히 사용되는 설명이지만,
엄연히 따지자면 메서드는 함수가 아니다.
자바에서 메서드는 클래스에 소속된 행동 의 주체이고
람다는 클래스에 속하지 않는 함수 를 표현할 수 있게 해주는 문법.
‘함수’ 라는 개념은 일급 객체로써 사용된다 라는것을 의미한다. 일급 객체의 사전적 정의는 다음과 같다.
일급 객체의 특성은 자바스크립트, 파이썬 등의 함수형 프로그래밍에서 근간이 되는 개념이다.
생각해보면, 자바에서 ‘행동’ 을 표현하는 메서드는 변수에 할당할 수 없다. 또한, 매개변수로 전달도 불가능하며 메소드 자체를 리턴하는 행위는 불가능하다.
그러나 람다 표현식은 일급 객체의 특징을 갖는다.
1. 변수나 데이터에 담을 수 있다
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
Consumer<String> c = (t) -> System.out.println(t);
c.accept("Hello World");
}
}
2. 파라미터로 전달 할 수 있다.
import java.util.function.Consumer;
public class Main {
public static void print(Consumer<String> c, String str) {
c.accept(str);
}
public static void main(String[] args) {
print((t) -> System.out.println(t) ,"Hello World");
}
}
3. 리턴값으로 사용할 수 있다.
import java.util.function.Consumer;
public class Main {
public static Consumer<String> hello() {
return (t) -> {
System.out.println(t);
};
}
public static void main(String[] args) {
Consumer<String> c = hello();
c.accept("Hello World");
}
}