람다식은 자바에서 함수형 프로그래밍을 구현하는 방식이다.
함수형 프로그래밍
- 순수 함수를 구현하고 호출하는 방식이다.
- 매개 변수만을 사용하도록 만든 함수로 외부 자료에 부수적인 영향이 발생하지 않도록 한다.
- 입력 받은 자료만으로 기반으로 수행되기 때문에 외부에 영향을 미치지 않아 병렬처리가 가능하다.
- 안정적인 확장성 프로그래밍 방식이다.
자바 8부터 함수형 인터페이스를 지원하고 있다.
함수형 프로그래밍을 사용하면 클래스를 생성하지 않고도 함수의 호출만으로 기능을 수행할 수 있다.
람다식 문법
매개 변수를 -> 식으로 함수에 대입한다.
자료형은 생략할 수 있다.
매개 변수 하나인 경우 괄호 생략 가능(두개인 경우는 괄호를 생략할 수 없음)
str -> {System.out.println(str);}
중괄호 안의 구현부가 한 문장인 경우 중괄호 생략 가능
str -> System.out.println(str);
중괄호 안의 구현부가 한 문장이라도 retrun 문은 중괄호를 생략할 수 없음
str -> return str.length(); // 오류
str -> {return str.length();} 가능
중괄호 안의 구현부가 반환문 하나라면 return, 중괄호 생략 가능
(x,y) -> x+y
str -> str.length()
람다식 사용하기
1. @FunctionalInterface 어노테이션이 붙은, 메소드가 1개인 인터페이스를 작성한다.
-> 람다식은 인터페이스 타입 변수에 바로 대입되기 때문에, 그 객체가 구현하는 메소드는 하나여야 한다.
@FunctionalInterface
public interface Myfunc{
String bridge(String x, String y);
}
2. 람다식을 사용할 곳에서 함수형 인터페이스를 구현하는 식을 작성하고, 인터페이스의 함수를 호출해 사용한다.
Myfunc myF = (x, y) -> x + y;
System.out.println(myF.bridge("ABC","DEF")); // "ABCDEF" 출력
위에 프로그램을 람다식 없이 구현하려면 인터페이스를 구현하는 클래스가 있어야 하지만, 함수형 인터페이스는 사용하는 곳에서 구현하고 사용할 수 있다.
람다식을 내부적으로 살펴보면 인터페이스를 구현하는 익명 객체가 생성되고 거기서 메소드를 구현하는 것이다.
람다식은 인터페이스 타입의 변수에 저장될 수 있어, 람다식을 일반 변수처럼도 사용할 수 있다. 자료 선언, 매개변수, 리턴값 등등.
'study > java' 카테고리의 다른 글
자바/JAVA JAR (0) | 2021.03.15 |
---|---|
자바/JAVA 스트림(Stream) (0) | 2021.03.13 |
자바/JAVA 내부 클래스 (0) | 2021.03.12 |
자바/JAVA Class 클래스 (0) | 2021.03.08 |
자바/JAVA static, final, static final (0) | 2021.03.06 |