[Java] Functional Interface

2025. 8. 26. 00:32·CS

함수형 인터페이스 

  • 추상 메서드(구현 없이 선언만 된 메서드)가 1개만 정의된 인터페이스
  • default 메서드: 인터페이스 안에서 메서드 구현을 가질 수 있도록 허용하는 문법
  • static 메서드: 객체를 생성하지 않고도 호출할 수 있는 메서드 (공용 기능, 유틸리티 기능을 활용할 때 사용)
  • 람다 표현식: 자바의 메소드를 간결한 함수식으로 표현한 것

 

함수형 인터페이스의 표준 API 종류

인터페이스 추상 메서드 lambda
Runnable void run() () -> void
Consumer<T> void accept(T t) T -> void
Supplier<T> T get() () -> T
Function<T, R> R apply(T t) T -> R
Predicate<T> boolean test(T t) T -> boolean 
Comparator<T> int compare(T o1, T o2) (T, T) -> int

 

 

1. Runnable

Runnable interface

  • 인수를 받지 않고 리턴값이 없으며 실행만 하는 람다 함수 형태를 받는 메서드를 제공합니다.
  • void run(): 인수 없이 리턴을 하지 않는 함수 형태, 대표적으로 스레드의 매개 변수로 이용합니다.

 

2. Consumer<T>

Consumer interface

  • 인자를 받아들이고 소비만 하는 함수를 제공합니다. (객체를 전달받아서 특정 작업을 수행하는 경우)
  • void accept(T t): 인수가 존재하고, 리턴을 하지 않는 함수 형태입니다.

 

3. Supplier<T>

Supplier Interface

  • 인수 없이 리턴값만 반환하는 함수를 제공합니다. (조건에 맞는 객체를 반환하는 경우)
  • T get(): 매개변수를 사용하지 않고, 리턴만 하는 함수 형태입니다.

 

4. Function<T, R>

Function Interface

  • 하나의 인수(T)를 받아들이고 결과를 생성(R)하는 함수를 제공합니다. (인수를 하나의 결과로 반환할 때 사용)
  • R apply(T t): 매개값을 매핑(타입 변환)해서 리턴합니다.

 

5. Predicate<T>

Predicate Interface

  • 하나의 인수를 받아 true/false를 리턴하는 함수를 제공합니다. (조건에 맞는 객체를 필터링하는 경우)
  • boolean test(T, t): 매개값이 조건에 맞는지 단정해서 boolean 리턴

 

6. Comparator<T>

Comparator Interface

  • T타입 인수 값을 연산해서 int 타입을 리턴하는 함수를 제공합니다. (객체 비교)
  • int compare(T o1, T o2)
    • 음수: o1 < o2, 0: o1 = o2, 양수: o1 > o2

 

 

저작자표시 비영리 변경금지 (새창열림)

'CS' 카테고리의 다른 글

[CS] Call by Value, Call by Reference  (1) 2025.08.31
[CS] clustered Index, non-clustered Index  (4) 2025.08.27
[CS] JVM Memory Structure  (6) 2025.08.15
[Tomcat] Tomcat의 핵심 컴포넌트와 동작 과정에 대해 분석해보자  (7) 2025.08.09
[Architecture] MSA (vs MA)  (1) 2024.10.22
'CS' 카테고리의 다른 글
  • [CS] Call by Value, Call by Reference
  • [CS] clustered Index, non-clustered Index
  • [CS] JVM Memory Structure
  • [Tomcat] Tomcat의 핵심 컴포넌트와 동작 과정에 대해 분석해보자
SeungbeomKim
SeungbeomKim
[IT(PS, CS, SW, etc.) 지식 기록] Github : https://github.com/daily1313/
  • SeungbeomKim
    개발 블로그
    SeungbeomKim
  • 전체
    오늘
    어제
    • 분류 전체보기 (400)
      • 일상 (33)
        • 여행 (17)
        • 회고록 (9)
        • 리뷰 (7)
      • PS (138)
        • 그리디 알고리즘[Greedy] (25)
        • 정렬 알고리즘[Sort] (18)
        • 문자열 알고리즘[String] (14)
        • 동적 계획 알고리즘[DP] (17)
        • 깊이 우선 탐색, 너비 우선 탐색[DFS, BFS.. (34)
        • 재귀[Recursion] (2)
        • 백트래킹[Backtracking] (5)
        • 브루트포스 알고리즘[Bruteforce] (16)
        • 자료 구조[Data Structure] (4)
        • 분할 정복 알고리즘[Divide & Conquer.. (3)
      • CS (29)
      • Network (11)
      • Database (8)
        • Elasticsearch (3)
      • Linux (2)
      • JavaScript (4)
        • AngularJS (1)
      • Java (100)
        • Effective Java (9)
        • Java Concept (21)
        • Spring (61)
        • Design Pattern (4)
      • Python (2)
      • Vscode (1)
      • DevOps (44)
        • AWS (27)
        • Git (7)
        • Docker (7)
        • Nginx (1)
      • 자격증 (10)
        • SQL (4)
      • 사이드 프로젝트 (3)
        • MatJido (3)
      • 기타 (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 소개
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    springboot
    일본여행
    Effective Java
    이펙티브 자바
    컴퓨터구조
    너비 우선 탐색
    dp
    sqld
    메타코딩
    Wi-Fi
    Spring
    정보처리기사 필기
    docker
    BFS
    백트래킹
    dfs
    다이나믹 프로그래밍
    정보처리기사 실기
    AWS
    정보처리기사
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
SeungbeomKim
[Java] Functional Interface
상단으로

티스토리툴바