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
'IT > Java' 카테고리의 다른 글
[Java] 메소드 참조(method reference) (0) | 2024.03.15 |
---|---|
[Java] 람다 작성법 (0) | 2024.03.14 |
[Java] anonymous (0) | 2024.03.13 |
[Java] 중첩 인터페이스 (0) | 2024.03.13 |
[Java] 중첩 클래스(Nested Class) (0) | 2024.03.12 |