본문 바로가기
Java

[Java] 람다 표현식 (Lambda expression)

by 스응 2023. 3. 22.
728x90
728x90

함수형 프로그래밍 방식 (FP, Functional Programming)

  - 함수를 기반으로 하는 프로그래밍 입력 방식

  - 매개변수로 전달받는 입력 외에는 외부 자료를 사용하지 않음

      → 여러 자료가 동시에 수행되는 '병렬 처리' 가능

  - 순수 함수를 구현하고 호출함

      → 외부 자료에 부수적인 영향(side-effect)을 주지 않도록 구현함

 

  - 컴파일러는 데이터 타입을 추론할 수 있음

      → 코드를 간소화해서 사용하는 '람다 표현식' 등장

 

 


람다 표현식 (Lambda expression)

1
2
3
4
5
6
7
8
9
10
11
// 기본 형식
() -> {실행코드;};
 
// 매개변수가 있다면
(매개변수1, ...) -> {실행코드;};
 
// 매개변수가 하나라면 () 생략 가능
매개변수1 -> {실행코드;};
 
// 구현부가 1줄이라면 {}도 생략 가능
매개변수1 -> 실행코드;
cs

 

#  람다식을 사용하기 위한 선행 조건

  : 하나의 추상 메서드만 존재하는 인터페이스가 먼저 생성되어 있어야 함 (함수형 인터페이스)

      → 오류를 막기 위해 인터페이스에 @FunctionalInterface라는 어노테이션을 지정할 것

           : 추상 메서드가 하나만 존재하도록 하는 제약

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 예시
 
// 인터페이스
@FunctionalInterface
public interface IAdd {
    int cal(int a, int b);
}
 
----------------
 
// main
 
public static void main(String[] args) {
 
    // 인터페이스로 인해 매개변수 타입 추론 가능 -> 생략
    // return 키워드로 인해 반환값 타입 추론 가능 -> 생략
    IAdd iAdd = (x, y) -> {return x + y;}; // 해당 식을 iAdd에 저장
 
    // 추상 메서드 구현
    int result = iAdd.cal(1010);
cs

 

1
2
3
4
5
// Thread도 람다 표현식으로 간단하게 사용 가능
 
new Thread(() -> {
    // run 메서드 안에 들어갈 실행코드 ㅈ
}).start();
cs
320x100
반응형

'Java' 카테고리의 다른 글

[Java] 데이터 형식 지정  (0) 2023.04.20
[Java] 스트림 (Stream)  (0) 2023.04.07
[Java] 래퍼 클래스 (Wrapper class)  (0) 2023.03.22
[Java] JSON  (0) 2023.03.15
[Java] Statement와 PreparedStatemet  (1) 2023.03.12

댓글