-
[Java] 람다식 - IntroCSE/Java 2015. 9. 20. 13:23
람다식은 여러 절로 구성되어 있습니다.
람다식
자바는 함수적 프로그래밍을 위해 자바 8부터 람다식(Lambda Expressions)을 지원하면서 기존의 코드 패턴과 많이 달라졌습니다.
람다식은 익명 함수(anonymous function)를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가깝습니다.
객체 지향 프로그래밍에 익숙한 개발자들은 다소 혼란스러울 수 있지만, 자바에서 람다식을 수용한 이유는 자바 코드가 매우 간결해지고, 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있기 때문입니다.
람다식의 형태는 매개 변수를 가진 코드 블록이지만, 런타임 시에는 익명 구현 객체를 생성합니다.
람다식 -> 매개 변수를 가진 코드 블록 -> 익명 구현 객체
예를 들어 Runnable 인터페이스의 익명 구현 객체를 생성하는 전형적인 코드는 다음과 같습니다.
123456Runnable runnable = new Runnable() {public void run() {...}};cs 위 코드에서 익명 구현 객체를 람다식으로 표현하면 다음과 같습니다.
12Runnable runnable = () -> { ... };cs 람다식은 "(매개변수)->{실행코드}" 형태로 작성되는데, 마치 함수 정의 형태를 띄고 있지만, 런타임 시에는 인터페이스의 익명 구현 객체로 생성됩니다.
어떤 인터페이스를 구현할 것인가는 대입되는 인터페이스가 무엇이냐에 달려있습니다.
위 코드는 Runnable 변수에 대입되므로 람다식은 Runnable의 익명 구현 객체를 생성하게 됩니다.
* 이 포스트은 서적 '이것이 자바다' 를 참고하여 작성한 포스트입니다.
'CSE > Java' 카테고리의 다른 글
[Java] 람다식 - 표준 API의 함수적 인터페이스1 (0) 2015.09.20 [Java] 람다식 - 클래스 멤버와 로컬 변수 사용 (0) 2015.09.20 [Java] 람다식 - 기본 문법, 타겟 타입과 함수적 인터페이스 (0) 2015.09.20 [Java] 제네릭(generic) - 제네릭 타입의 상속과 구현 (0) 2015.09.20 [Java] 제네릭(generic) - 제한된 타입 파라미터, 와일드카드 타입 (1) 2015.09.20 [Java] 제네릭(generic) - 제네릭 메소드 (0) 2015.09.20