java 8 api :: lambda 이용하기

18
JAVA 8 API 김윤섭

Upload: kim-yoonsub

Post on 14-Apr-2017

240 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Java 8 api :: lambda 이용하기

JAVA 8 API김윤섭

Page 2: Java 8 api :: lambda 이용하기

• Lambda(ƛ)�표현식�

• 함수형�인터페이스�

• stream(�)

Page 3: Java 8 api :: lambda 이용하기

• Lambda(ƛ)�표현식

Page 4: Java 8 api :: lambda 이용하기

• 함수�정의,�함수�적용,�귀납적�함수를�추상화한�형식�체계�

> ����������������������������������이와�같은�함수를

LAMBDA(ƛ)�표현식

링크 : closure와 currying

Page 5: Java 8 api :: lambda 이용하기

• 함수�정의,�함수�적용,�귀납적�함수를�추상화한�형식�체계�

> ����������������������������������이와�같은�함수를�

> ����������������������������������이렇게�축약할�수�있습니다.��(�lambda�표현식�)

LAMBDA(ƛ)�표현식

링크 : closure와 currying

Page 6: Java 8 api :: lambda 이용하기

• 함수�정의,�함수�적용,�귀납적�함수를�추상화한�형식�체계�

> ����������������������������������이와�같은�함수를�

> ����������������������������������이렇게�축약할�수�있습니다.��(�lambda�표현식�)�

> ����������������������������������또한,�이렇게도�가능합니다.��(�currying�방식)�

• 프로그래밍에서�->�익명�메소드

LAMBDA(ƛ)�표현식

링크 : closure와 currying

Page 7: Java 8 api :: lambda 이용하기

LAMBDA(ƛ)�표현식�-�문법

• 기본문법�

> (�매개변수�)�->�{�실행시킬�구문�}�

• 대상�메소드를�자동으로�찾고,�람다식만�적용

Page 8: Java 8 api :: lambda 이용하기

LAMBDA(ƛ)�표현식�-�문법

• 응용문법�

Page 9: Java 8 api :: lambda 이용하기

LAMBDA(ƛ)�표현식�-�하급�예제

• 단순한�for문�비교�

• lambda식�

> stream()을�사용하여�0~10미만의�수를�포함한�stream을�생성�

> forEach�(i�->�{�…�}�문법�사용�)�

> 매개변수�i��

Page 10: Java 8 api :: lambda 이용하기

LAMBDA(ƛ)�표현식�-�중급�예제

Page 11: Java 8 api :: lambda 이용하기

• 장점�

>코드의�수�감소�

>메소드로�행동방식을�전달�

>추상화로�개발자의�의도를�명확하게�하도록�도움�

• 단점�

>람다식을�실행할때에는�인터페이스에�선언된�메소드를�호출하여야�한다.�

> 재귀�람다식의�호출이�까다롭다.�

> 클로저가�지원되지�않는다.

LAMBDA(ƛ)�표현식�-�장/단점

Page 12: Java 8 api :: lambda 이용하기

• 함수형�인터페이스�(Functional�Interface)�

> �개념�소개�

> @FunctionalInterface�적용�유무�

> 추상�메소드가�여러개일때�

> default�메소드

Page 13: Java 8 api :: lambda 이용하기

함수형�인터페이스

• 추상메소드가�1개�뿐인�인터페이스를�함수형�인터페이스라�합니다.�

• @FunctionalInterface�

>함수형�인터페이스임을�명시�

> 추상메소드가�두개�이상이라면�컴파일�오류를�발생�

> 없어도�함수형�인터페이스로서�사용�가능(�=>�기존�인터페이스도�람다식�사용�가능�)

Page 14: Java 8 api :: lambda 이용하기

함수형�인터페이스�-�Annotation�비교

Page 15: Java 8 api :: lambda 이용하기

람다식 사용불가

함수형�인터페이스�-�메소드�추가시

Page 16: Java 8 api :: lambda 이용하기

함수형�인터페이스�-�예외�메소드

• 구현이�되어있는�default,�static�메소드는�추가로�더�있어도�무방�

• default�메소드�

> JAVA�8�이�되면서�생긴�인터페이스의�메소드�형태�

> Default�methods�are�defined�

with�the�default�modifier�=>�default�메소드는�기본적으로�사용될�형태로�정의�된다.

Page 17: Java 8 api :: lambda 이용하기

함수형�인터페이스�-�기타

• http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html�=>�람다표현식을�타겟으로�한�공식제공�인터페이스�

• default�메소드�탄생으로�인한�다중�상속의�모호성이�대두됨

Page 18: Java 8 api :: lambda 이용하기

code : https://github.com/yoonsubKim/java-lambda

REFERENCE