- 추상메소드가 하나뿐인 인터페이스를 함수형 인터페이스라고 한다.
- 자바8 부터는 람다식을 사용하여 함수형 인터페이스의 인스턴스를 나타낼 수 있다.
- 함수형 인터페이스에는 여러 개의 default 메서드가 있을 수 있다.
- 함수형 인터페이스의 인스턴스를 생성하기 위해 익명 클래스 등을 주로 사용했지만 람다식을 이용하면 편하다.
- 자바8에서 추가된 @Functional Interface 애노테이션은 함수형 인터페이스 임을 나타낸다.
- Runnable, ActionListener, Comparable은 함수형 인터페이스 이며 자바8 이전에는 익명 클래스의 객체를 생성하거나 이러한 인터페이스를 구현해야했지만 람다식을 이용하여 편리하게 구현할 수 있다.
- Runnable 인터페이스의 인스턴스를 람다식을 이용하여 아래처럼 얻을 수 있다.
Runnable r = () -> System.out.println("orclejava community");
- 쓰레드를 생성할 때 람다식을 이용할 수 있다.
new Thread( () -> System.out.println("oraclejava community");
package functionalInterface;
@FunctionalInterface
interface Worker{
public void work();
}
public class FiTest {
static void execute(Worker worker){
worker.work();
}
public static void main(String[] args) {
execute(new Worker() {
@Override
public void work() {
System.out.println("hello worker");
}
});
execute( () -> System.out.println("hello lambda worker"));
}
}
실행결과
hello worker
hello lambda worker