[Java] 람다식과 함수형 인터페이스

Junseo Kim·2021년 1월 30일
0

[Java]자바 기초

목록 보기
25/35

람다식

  • 메소드를 하나의 식으로 표현한 것.
  • 익명 함수를 줄여서 쓰는 식이다.
  • 함수형 인터페이스를 구현할 때 쓰는 람다 형태의 표현식이다.(함수형 인터페이스를 인라인으로 구현한 오브젝트)
        // 익명 함수
        MyInterface myInterface = new MyInterface() {
            @Override
            public void eat() {
                System.out.println("hello");
                System.out.println("eating..");
            }
        };
        

위와 아래의 코드는 같은 코드이다.

	// 람다식
        MyInterface myInterface = () -> {
            System.out.println("hello");
            System.out.println("eating..");
        };

람다식은 매개변수, 리턴 타입, 변수로 만들 수 있다.

함수형 인터페이스

람다식을 다루기 위한 인터페이스로. 추상 메소드가 정확히 하나만 있는 인터페이스이다. 자바 API의 Comparator, Runnable 등이 함수형 인터페이스이다.

추상 메소드가 하나만 정의되어 있어야 람다식과 인터페이스의 메소드가 1대1로 연결될 수 있기 때문이다.(static 메소드와 default 메소드는 개수 제한 없음. 디폴트 메서드를 가지고 있더라도 추상 메서드가 하나만 존재한다면 함수형 인터페이스이다.)

@FunctionalInterface
public interface MyInterface {

    void eat(); // abstract 생략 되어 있음. 딱 하나만 존재해야함

    static void printName(String name) {
        System.out.println(name);
    }
    
    default void printHello() {
        System.out.println("hello");
    }

}

0개의 댓글