[JAVA8] 함수형 인터페이스

이재훈·2023년 5월 2일
0

JAVA8

목록 보기
10/23

인프런 강의 "더 자바, JAVA8"(백기선님)의 강의를 듣고 정리한 글 입니다.
JAVA8에 추가된 핵심 기능들을 이해하기 쉽게 설명해 주시니 한번씩 들어보시는 것을 추천드립니다.

"더 자바, JAVA8 바로가기"


함수형 인터페이스란 ?

인터페이스 안에 추상메서드가 하나만 존재하는 것입니다.

@FunctionalInterface
public interface RunSomething {

    void doIt();

}

public class Foo {
    public static void main(String[] args) {
        // 익명 내부 클래스 
        RunSomething runSomething1 = new RunSomething() {
            @Override
            public void doIt() {
                System.out.println("hello");  
            }
        };
        
        // 람다
        RunSomething runSomething2 = () -> System.out.println("hello");
        
    }
}

함수형 인터페이스를 익명 내부클래스로 구현해보았습니다.
아래는 똑같은 코드를 람다로 표현하였습니다.

정리

함수형 인터페이스 (Functional Interface)

  • 추상 메서드를 딱 하나만 가지고 있는 인터페이스
  • SAM(Single Abstract Method) 인터페이스
  • @FunctianlInterface 어노테이션을 가지고 있는 인터페이스

람다표현식

  • 함수형 인터페이스의 인스턴스를 만드는 방법으로 쓰일 수 있다.
  • 코드를 줄일 수 있다.
  • 메소드 매개변수, 리턴타입, 변수로 만들어 사용할 수도 있다.

자바에서 함수형 프로그래밍

  • 함수를 First class Object로 사용할 수 있다.
  • 순수함수 (Pure function)
    - 사이드 이펙트를 만들 수 없다(함수 밖에 있는 값을 변경하지 못한다.)
    - 상태가 없다.
  • 고차 함수
    - 함수가 함수를 매개변수로 받을 수 있고 함수를 리턴할 수도 있다.
  • 불변성
profile
부족함을 인정하고 노력하자

0개의 댓글