더북(TheBook)

03
함수형 인터페이스

지금까지 설명한 것처럼, 자바에는 Runnable, Comparator 등 코드 블록을 캡슐화하는 수많은 기존 인터페이스가 있다. 람다는 이러한 기존 인터페이스와 호환된다.

단일 추상 메서드single abstract method를 갖춘 인터페이스의 객체를 기대할 때 람다 표현식을 사용할 수 있다. 그리고 이러한 인터페이스를 함수형 인터페이스functional interface라고 한다.

<Note>

함수형 인터페이스가 단일 추상 메서드를 포함해야 하는 이유가 궁금할 것이다. 인터페이스에 있는 모든 메서드는 추상 메서드가 아니었나? 실제로는 언제나 인터페이스에서 toString이나 clone 같은 Object 클래스의 메서드를 재선언할 수 있었고, 이러한 재선언은 해당 메서드를 추상 메서드로 만들지 않는다(자바 API에 있는 몇몇 인터페이스에서는 javadoc 주석을 붙일 목적으로 Object 클래스의 메서드를 재선언한다). 더 중요한 사실은 31페이지에 있는 “1.7 디폴트 메서드” 절에서 살펴볼 것처럼, 자바 8에서는 인터페이스에 비추상 메서드를 정의할 수 있다는 점이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.