-
함수형 인터페이스와 람다 표현식백기선(인프런 강의)/더 자바, Java 8 2020. 7. 6. 09:02반응형
함수형 인터페이스(Funtional Interface)
- 추상 메소드를 딱 하나만 가지고 있는 인터페이스
- SAM(Single Abstract Method) 인터페이스
- @FunctionalInterface 애노테이션을 가지고 있는 인터페이스
람다 표현식(Lambda Expressions)
- 함수형 인터페이스의 인스턴스를 만드는 방법으로 쓰일 수 있다.
- 코드를 줄일 수 있다.
- 메소드 매개변수, 리턴타입, 변수로 만들어 사용할 수 있다.
자바에서 함수형 프로그래밍
- 함수를 First class object로 사용할 수 있다.
- 순수함수(Pure function)
- 사이드 이펙트를 만들 수 없다.(함수 밖에 있는 값을 변경하지 못한다.)
- 상태가 없다.(함수 밖에 정의되어있는)
- 고차 함수(High-Order Fucntion)
- 함수가 함수를 매개변수로 받을 수 있고 함수를 리턴할 수도 있다.
- 불변성
예제
@FunctionalInterface public interface RunSomting { int doIt(int number); }
public class RunMain { public static void main(String[] args) { int testNum = 20; // 기존에 사용하는 방법 RunSomting runSomting = new RunSomting() { @Override public int doIt(int number) { //testNum++; 사이드 이펙트를 만들 수 없다.(함수 밖에 있는 값을 변경하지 못한다.) return number + 10; } }; System.out.println(runSomting.doIt(10)); // 람다 사용시 RunSomting runSomtingLamda = (number) -> { //testNum++; 사이드 이펙트를 만들 수 없다.(함수 밖에 있는 값을 변경하지 못한다.) return number + 20 + testNum; }; System.out.println(runSomtingLamda.doIt(10)); } }
반응형'백기선(인프런 강의) > 더 자바, Java 8' 카테고리의 다른 글
인터페이스 기본 메소드와 스태틱 메소드 (0) 2020.07.08 메소드 래퍼런스 (0) 2020.07.07 람다 표현식 (0) 2020.07.07 자바에서 제공하는 함수형 인터페이스 (0) 2020.07.07 자바 8 소개 (0) 2020.07.06