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

2023. 3. 22. 11:56·Java/Base
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(10, 10);
cs

 

1
2
3
4
5
// Thread도 람다 표현식으로 간단하게 사용 가능
 
new Thread(() -> {
    // run 메서드 안에 들어갈 실행코드 ㅈ
}).start();
cs
320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Base' 카테고리의 다른 글

[Java] 데이터 형식 지정  (0) 2023.04.20
[Java] 스트림 (Stream)  (0) 2023.04.07
[Java] 래퍼 클래스 (Wrapper class)  (0) 2023.03.22
[Java] 웹 페이지의 JSON을 가져와 DB 테이블에 삽입하기  (0) 2023.03.16
[Java] Gson 클래스를 활용한 JSON Phasing  (0) 2023.03.15
'Java/Base' 카테고리의 다른 글
  • [Java] 데이터 형식 지정
  • [Java] 스트림 (Stream)
  • [Java] 래퍼 클래스 (Wrapper class)
  • [Java] 웹 페이지의 JSON을 가져와 DB 테이블에 삽입하기
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (384)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (16)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    오블완
    jQuery
    티스토리챌린지
    SEO
    C#
    git
    vuejs
    jsp
    SWAGGER
    js
    HTML
    Wordpress
    면접
    http
    tailwindcss
    Swing
    개발일지
    zapier
    SpringBoot
    Hotkeys
    php
    cs
    SQL
    typeScript
    java
    Android
    CSS
    Codeigniter
    errorNote
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Java] 람다 표현식 (Lambda expression)
상단으로

티스토리툴바