728x90
2. 함수형 인터페이스와 람다 표현식 소개
함수형 인터페이스 (Functional Interface)
- 추상 메소드를 딱 하나만 가지고 있는 인터페이스
- SAM (Single Abstract Method) 인터페이스
- @FunctionalInterface 애노테이션을 가지고 있는 인터페이스
@FunctionalInterface
public interface RunSomething {
void doIt();
}
public class Foo {
public static void main(String[] args) {
// 익명 내부 클래스 anonymous inner class
RunSomething runSomething = new RunSomething() {
@Override
public void doIt() {
System.out.println("Hello");
}
};
}
}
람다 표현식 (Lambda Expressions)
- 함수형 인터페이스의 인스턴스를 만드는 방법으로 쓰일 수 있다.
- 코드를 줄일 수 있다.
- 메소드 매개변수, 리턴 타입, 변수로 만들어 사용할 수도 있다.
public class Foo {
public static void main(String[] args) {
RunSomething runSomething2 = () -> System.out.println("Hello");
runSomething2.doIt();
}
}
자바에서 함수형 프로그래밍
- 함수를 First class object로 사용할 수 있다.
- 순수 함수 (Pure function)
- 사이드 이팩트가 없다. (함수 밖에 있는 값을 변경하지 않는다.)
- 상태가 없다. (함수 밖에 있는 값을 사용하지 않는다.)
- 고차 함수 (Higher-Order Function)
- 함수가 함수를 매개변수로 받을 수 있고 함수를 리턴할 수도 있다.
- 불변성
@FunctionalInterface
public interface RunSomething2 {
int doIt(int number);
}
public class Foo {
public static void main(String[] args) {
RunSomething2 runSomething21 = (number) -> {
return number + 1;
};
System.out.println(runSomething21.doIt(1));
}
}
728x90
반응형
'Programming > Java' 카테고리의 다른 글
[Java] - 7. 자바 8 API의 기본 메서드와 스태틱 메소드 (0) | 2023.04.04 |
---|---|
[Java] - 6. 인터페이스 기본 메소드와 스태틱 메소드 (0) | 2023.04.01 |
[Java] - 5. 메소드 레퍼런스 (0) | 2023.04.01 |
[Java] - 4. 람다 표현식 (0) | 2023.04.01 |
[Java] - 3. 자바에서 제공하는 함수형 인터페이스 (0) | 2023.04.01 |