github.com/whiteship/live-study/issues/15
목표자바의 람다식에 대해 학습하세요. 학습할 것 (필수)
|
0. 자바의 람다식?
- 함수적 프로그래밍을 위해 자바8부터 람다식(Lambda Expressions) 지원
- 람다식은 익명 함수(anonymous function)를 생성하기 위한 식. 객체 지향 언어보다는 함수지향 언어에 가까움
- 자바 코드개 매우 간결해지고, 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있다.
1. 람다식 사용법
람다식의 형태 : 매개 변수를 가진 코드 블록이지만 런타임시에는 익명 구현 객체를 생성한다.
익명 구현 객체 생성하는 전형적인 코드는 아래와 같다.
Runnable runnable = new Runnable() { public void run() { } }
이를 람다식으로 표현하면 아래와 같다.
// 인터페이스의 익명 구현 객체. 즉 여기서는 Runnable의 익명 구현 객체를 생성하는 것 Runnable runnable = () -> {...}
※ (매개변수) -> { 실행코드} 형태로 작성되어 마치 함수 정의 형태인 것처럼 보이지만, 컴파일 후 런타임 시에 인터페이스의 익명 구현 객체로 생성
2. 함수형 인터페이스
3. Variable Capture
4. 메소드, 생성자 레퍼런스
라이브스터디
익명 내부 클래스는 컴파일 후 class파일 생성, 람다는 아님. 람다는 invokedynamic (indy)
익명 내부 클래스는 쉐도잉 일어나지만, 람다는 람다가 있는 메소드와 스콥이 다르지않다(같다!!!) 즉 쉐도잉 일어나지않음
First class citizen : 함수를 변수에 선언, 함수를 메소드에 전달(파라미터)하고 리턴받을 수 있음
'Programming > Java' 카테고리의 다른 글
[도서] 켄트 벡의 구현패턴 - 읽기 쉬운 코드를 작성하는 77가지 자바 코딩 비법 (0) | 2022.02.10 |
---|---|
main() 메서드가 실행되기 전 JVM에서 수행하는 전처리 작업들 (0) | 2021.04.25 |
[whiteship 온라인 스터디] 13주차 과제: I/O (0) | 2021.02.27 |
[whiteship 온라인 스터디] 14주차 과제: 제네릭 (0) | 2021.02.27 |
[whiteship 온라인 스터디] 12주차 과제: 애노테이션 (0) | 2021.02.25 |