자바8에 들어온 함수형 표현식
함수형 인터페이스(Functional Interface)
- 추상 메소드를 딱 하나만 가지고 있는 인터페이스
- SAM (Single Abstract Method) 인터페이스
- @FuncationInterface 애노테이션 을 가지고 있는 인터페이스
사용법
Interface
@FunctionalInterface
public interface RunSomething {
int doIt(int numm);
static void printName() {
System.out.println("dddddddd");
}
default void printAge() {
System.out.println("40");
}
}
- 텍스트@FunctionalInterface가 정의되어있어야 한다.
- 정의해 둔 인터페이스에 추상메소드는 1개여야만 한다.
- default 메소드와 static 메소드는 무시한다.
public static void main(String[] args) {
// 익명 내부 클래스 : 즉시 실해 함수
RunSomething runSomething = new RunSomething() {
@Override
public void doIt() {
System.out.println("TEST");
}
};
runSomething.doIt(num);
}
람다 표현식 (Lambda Expressions)
- 함수형 인터페이스의 인스턴스를 만드는 방법으로 쓰일 수 있다.
- 코드를 줄일 수 있다.
- 메소드 매개변수, 리턴 타입, 변수로 만들어 사용할 수도 있다
RunSomething runSomething = (num) -> System.out.println(num);
runSomething.doIt(num);