함수형 프로그래밍 개념 중 하나, 익명 함수를 간결하게 표현하는 방법
특징
-익명함수 : 이름이 없는 함수로, 한번 사용하고 버릴 수 있음
- 간결한 문법 : 불필요한 코드를 줄이고, 코드를 간결하게 표현 가능
- 함수를 값으로 다룸 : 함수를 변수에 할당하거나 함수의 매개변수 전달 가능
- 클로저 지원 : 함수 내부에서 외부 변수 참조 가능
쓰이는 상황
- 함수형 인터페이스 구현
// 함수형 인터페이스를 람다식으로 구현하는 예제 @RestController public class MyController { @GetMapping("/greet") public String greet() { GreetingService greetingService = () -> "Hello, World!"; return greetingService.sayHello(); } }
- 스트림 연산 : 데이터를 필터링, 매핑, 정렬 및 그룹화 하는데 사용
// 람다식을 사용하여 스트림 연산하는 예제 @RestController public class MyController { @Autowired private UserRepository userRepository;
@GetMapping("/users")
public List<User> getUsers() {
List<User> users = userRepository.findAll();
return users.stream()
.filter(user -> user.getAge() > 18)
.map(User::getName)
.collect(Collectors.toList());
}
}
- 이벤트 리스너
// 람다식을 사용하여 이벤트 리스너 정의하는 예제 @Component public class MyEventListener { @EventListener public void handleEvent(MyCustomEvent event) { // 이벤트 처리 코드 System.out.println("이벤트 발생: " + event.getMessage()); } }
람다식 연산자 기호
- -> : 매개변수와 표현식을 구분하는 역할, 왼쪽에는 매개변수 목록을 오른쪽에는 람다 함수의 본문을 위치
- () : 매개변수 목옥을 감싸는 괄호, 매개변수가 없는 경우에도 비워둘 수 있음
- {} : 본문을 감싸는 괄호, 여러 문장을 포함할 때 사용
- () 메서드호출 : 메서드를 호출할 때 사용되는 괄호
- :: 메서드 참조 : 메서드를 참조할 때 사용, 메서드 레퍼런스로 알려저 있음
- ...(가변인자) : 가변인자를 나타내는 표기
- ::(생성자 참조) : 생성자 참조할 때 사용