람다식은 메서드를 하나의 식으로 표현할수 있게 해주며, 간결한 함수표현을 제공한다
람다식의 구성요소
- 매개변수(parameters)
- 메서드에 전달되는 입력값
- 매개변수 타입은 생략 가능
- 화살표 연산자 ->
- 매개변수와 본문(실행코드)를 구분하는 역할
- 본문(body)
- 실행할 코드
- 한줄일 경우 중뢀호{}생략 가능
(parameters) -> {body}
// 기존 방식: 익명 클래스 사용
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("Hello, World!");
}
};
// 람다식 방식
Runnable runnable = () -> System.out.println("Hello, World!");
예제
1. 매개변수 없는 람다식
() -> System.out.println("No parameters");
2. 매개변수 하나인 람다식
s -> System.out.println(s);
3. 매개변수 여러개인 람다식
(a, b) -> a + b;
4. 여러줄로 구성된 본문
(a, b) -> {
int result = a + b;
return result;
}
람다식은 함수형 인터페이스와 함께 사용된다
함수형 인터페이스는 단 하나의 추상 메서드만 가지는 인터페이스
람다식은 스트림과 자주 사용된다
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // [2, 4]
람다식의 제약
- 람다식 내부에서는 변수 범위 제한
- 람다식 안에서 사용하는 외부변수는 final이어야 함
- 오직 함수형 인터페이스에서만 사용가능
- 인터페이스는 반드시 단 하나의 추상메서드를 가져야함
출처 : ChatGPT
'BE > Java' 카테고리의 다른 글
[Java] 어노테이션 (2) | 2024.12.11 |
---|---|
[Java] JDBC와 JPA (1) | 2024.12.11 |
[Java] 스트림 (1) | 2024.12.09 |
[Java] Map (0) | 2024.12.07 |
[Java] Optional (0) | 2024.12.06 |