IT/Java
[Java] 람다식(Lambda Expressions)
Huitopia
2024. 3. 14. 01:32
728x90
람다식(Lambda Expressions)
- 추상 메소드가 하나인 인터페이스의 익명 클래스의 객체 생성코드를 간단히 표현한다.
- 데이터 처리부에 제공되는 함수 역할을 하는 매개변수를 가진 중괄호이다.
- 메소드를 하나의 식(expression)으로 표현하여 간략하게 표현 가능하다.
- 메소드의 이름과 반환값이 없어져 익명 함수(Anonymous function)라고도 한다.
- 람다식 자체만으로 메소드의 역할을 대신 하고, 메소드의 매개변수로 전달도 가능하며, 메소드의 결과로 반환도 가능하다.
- 람다식으로 메소드를 변수처럼 다루는 것이 가능하다.
람다식: (매개변수, ...) -> { 처리 내용 }
- 매개변수 화살표(->) 함수 몸체로 이용하여 사용한다.
- 함수 몸체가 단일 실행문이면 중괄호{} 생략이 가능하다.
- 함수 몸체가 return문으로만 구성되어 있는 경우 중괄호{}를 생략할 수 없다.
- 람다식 내에서 사용되는 지역 변수는 final이 붙지 않아도 상수로 간주된다.
- 람다식으로 선언되 변수명은 다른 변수명과 중복될 수 없다.
함수형 인터페이스(function interface)
- 구현해야 할 추상 메소드가 하나만 정의된 인터페이스이다.
- 람다식으로 생성된 순수 함수는 함수형 인터페이스로만 선언 가능하다.
@FunctionalInterface
- 인터페이스가 함수형 인터페이스임을 보장하기 위해 어노테이션을 붙인다.
- 컴파일 과정에서 추상 메소드가 하나인지 검사해주며, 붙이는 건 선택 사항이다.
예제 코드
package ch16.sec00;
public class Lambda02 {
public static void main(String[] args) {
MyInterface02 myInterface02 = (int a, int b) -> {
System.out.println("Lambda02.");
};
}
}
@FunctionalInterface
interface MyInterface02 {
void method1(int a, int b);
}
728x90