SlideShare a Scribd company logo
JAVA Lambda
작성자 : 홍효상
이메일 : hyomee@naver.com
소스 : https://github.com/hyomee/JAVA_EDU
프로그램은 사람이 이해하는 코드를 작성.
느려도 꾸준하면 경기에서 이긴다.
Content
소스 : https://github.com/hyomee/JAVABASIC
16. Lambda
1. 익명(Anonymous) Class
2. Lambda
3. 함수형 인터페이스
4. 타입 추론
1. 익명(Anonymous) Class
16. Lambda
• 프로그램에서일시적으로한번만사용되고버려지는객체를매번객체를만들어야하나?
• 확장성을고려해서객체를생성해야하는데…수정이편할까?
• 사용처:인스턴스변수,인스턴스메서드,인스턴스메소드의매개변수
“ 이름을 알 수 없는 객체로 한번만 사용하고 버려지는 객체”
16-1. 익명(Anonymous) Class
사용하는 이유
• 클래스생성
• 인터페이스의구현
구현 하는 방법
01. 클래스생성
➢ 1.추상클래스생성 예제 : AnonymousAbstract.java
예제 : https://github.com/hyomee/JAVA_EDU/tree/main/L/src/com/hyomee/anonymous
➢ 2. 추상클래스 구현 Class 생성
예제 : AnonymousAbstarctClass.java - 인스턴스 변수
익명(Anonymous) Class
• 클래스를정의하지않고필요할때이름없이즉시선언하고인스턴스화해서사용
• 객체안에만드는로컬클래스와동일하다
• new수식이올수있는곳어디든지사용가능하나생성자는정의할수없음
• 익명클래스내부에서외부의메소드내변수를참조할때는메소드의지역변수중
final로선언된변수만참조가능
-변수는Stack에있고객체는Heap에있음,즉Method실행이끝나고Stack는사라지지만
Heap에있는Method는사라지지않기때문
1. 익명(Anonymous) Class
16. Lambda
16-1. 익명(Anonymous) Class
예제 : https://github.com/hyomee/JAVA_EDU/tree/main/L/src/com/hyomee/anonymous
➢ 2.추상클래스 구현 Class 생성
예제 : AnonymousAbstarctClass.java - 인스턴스 Method
예제 : AnonymousAbstarctClass.java - 인스턴스 메서드의 파라메터
➢ 3. 실행
➢ 2. 추상클래스 구현 Class 생성
예제 : AnonymousMain.java
파라메터로 객체 생성 하여 파라메터로 전달
예제 : AnonymousChild .java 참조
1. 익명(Anonymous) Class
16. Lambda
16-1. 익명(Anonymous) Class
02. 인터페이스의구현
➢ 1. 인터페이스구현
예제 : https://github.com/hyomee/JAVA_EDU/tree/main/L/src/com/hyomee/anonymous
예제 : AnonymousInterface.java
➢ 2. 인터페이스구현체
예제 : AnonymousInterfaceClass.java
➢ 3. 실행
익명 객체 생성
람다 생성
1. Lambda
16. Lambda
• 자바8이전에는Method라는함수형태가존재하지만객체를통해서만접근이가능하고,Method그자체를변수로사용하지는못한다.
• 자바8에서는함수를변수처럼사용할수있기때문에,파라미터로다른메소드의인자로전달할수있고,리턴값으로함수를받을수도있다.
• 이름없는익명함수구현에서주로사용하며함수형인터페이스의인스턴스(구현객체)를표현
:함수형인터페이스(추상메소드가하나인인터페이스)를구현객체를람다식으로표현
“ 자바에서 함수형 프로그램 방식으로 구현 해 주는 문법”
16-2. Lambda
람다 ( Lambda )
JAVA에서 함수형 프로그램
➢ 함수
• 함수정의 ->구현 ->사용
void fun() {
…
}
fun()
➢ JAVA
• 함수는없음
• Class, Interface 의Method
class C {
void method() {
…..
}
}
C c = new C();
c.method();
➢ JAVA Lambda
익명 멤버 변수로 구현 방법 적용
• 하나의추상메서드만있는interface 생성-.>익명 Class (멤버변수)작성->Lambda로변경
Interface Example {
R apply(A arg);
}
01. 인터페이스
Example exp = new Example() {
@Override
public R apply(A arg) {
body
}
};
02. 인스턴스생성
Example exp = (arg) {
body
};
03. 인자목록과함수몸통
을제외하고모두제거
Example exp = (arg) - >{
body
} ;
04. 문법적용
1. Lambda
16. Lambda
“ 자바에서 함수형 프로그램 방식으로 구현 해 주는 문법”
16-2. Lambda
표현식
• (arg1, arg2...) -> { body }
• (params) -> expression
• (params) -> statement
• (params) -> { statements }
• (int a, int b) -> { return a + b; };
> 타입 추론에 의한 타입 제거
: (a, b) -> { return a+b } ;
> 무엇인가를 반환 하거나 한 줄 표현식이 가능 하면 return 삭
제
: (a, b) -> a+b;
• () -> System.out.println("Hello ");
> 파라미터없고 Hello 출력 System.out::println;
• () -> System.out.println("Hello "); // 파라미터 없고 Hello 출력
• (String s) -> { System.out.println(s); } // String s입력매개변수로 받아 출력
• () -> 8514790 //파라미터없고 8514790가 리턴
• () -> { return 3.14 }; //파라미터없고 3.14리턴
1. Lambda
16. Lambda
16-2. Lambda
추상 메서드를 이용한 람다
class C {
void method() {
…..
}
}
C c = new C();
c.method();
interface 익명 이너 클래스 함수 실헹
리턴 : 없음
매개 : 있음
interface IfNoRnNoArg {
void method();
}
IfNoRnNoArg iNrNa = new IfNoRnNoArg() {
void method () {
…
}
};
IfNoRnNoArg iNrNa = ( ) - > { … }; iNrNa.method();
리턴 : 없음
매개 : 있음
interface IfNoRnArg {
void method(int a);
}
IfNoRnArg iNra = new IfNoRnArg() {
void method( int a ) {
…
}
};
IfNoRnArg iNra = (int a) -> {
…
}
iNra.method(1);
리턴 : 없음
매개 : 있음
interface IfRnNoArg {
int method();
}
IfRnNoArg irNa = new IfRnNoArg () {
int method() {
int a = 0
…
return a
}
};
IfRnNoArg irNa = () -> {
int a = 10;
return a;
};
irNa.method();
리턴 : 없음
매개 : 있음
interface IfRnArg {
int method(int a, int b);
}
IfRnArg ira = new IfRnNoArg () {
int method(int a, int b) {
return a + b;
}
};
IfRnArg ira = (a, b) -> {
return a + b;
};
ira.method(5, 10)
배열
interface IfArray {
int [] method(int length)
}
IfRnArg ira = new IfArray () {
int method(int length) {
return new int[length];
}
};
IfRnArg ira = (length) -> {
return new int[length];
};
or
IfRnArg ira = int[] :: new;
int [] a1 = ira.
ira.method(10);
예제 : LambdaFunctional.java
1. Lambda
16. Lambda
16-2. Lambda
추상 메서드를 이용한 람다
예제 : LambdaFunctional.java
1. Lambda
16. Lambda
16-2. Lambda
존재 하는 객체 람다 표현
예제 : ExistsClassLamda.java
01. 객체생성
람다로 객체 생성 방법
람다 선언 방법 : 클래스객체 :: 인스턴스메서드명
1. Lambda
16. Lambda
16-2. Lambda
존재 하는 객체 람다 표현
예제 : ExistsClassLamda.java
02. 기존 객체의메서드실행
클래스의 기존 함수 지정
람다 선언 방법 : 클래스객체 :: 인스턴스메서드명
클래스의 기존 함수 선택
클래스의 기존 함수 선택
람다로 Class 생성
1. Lambda
16. Lambda
16-2. Lambda
존재 하는 객체 람다 표현
예제 : ExistsClassLamda.java
03. Static 메서드실행 람다 선언 방법 : 클래스객체 :: 정적메서드명
04. 첫번째 매개변수로 전달된 매개변수를 사용 함
객체를 메소드 내부로 보냈으므로 메서드 내부에서 생성
할 필요 없음
1. 함수형 인터페이스
16. Lambda
16-3. 함수형 인터페이스
함수형 인터페이스
• 추상Method가하나뿐인인터페이스(Single Abstract Method:SAM)
• 여러개의Default Method가있을수있다.
• @FunctionalInterface 어노테이션은함수형인터페이스이다
• Runnable, ActionListener, Comparable은함수형인터페이스
:자바8이전:익명클래스이용
:자바8이후:람다식이용
java.util.function 에서 제공 하는 함수형 인터페이스
• Predicate: 하나의매개변수를주는boolean형을 반환
• Consumer:하나의매개변수를주는void형accept 메소드
• Function: T유형의인수를취하고R유형의결과를반환하는추상메소드apply
• Supplier: 메소드인자는없고T유형의결과를반환하는추상메소드get
• UnaryOperator:하나의인자와리턴타입을가진다. T->T
• BinaryOperator:두개의인수,동일한타입의결과를반환하는추상메서드apply
01. 가장기본이되는함수형인터페이스
02. 파라메터가두개인함수형인터페이스
03. 파라메터를받고동일한타입을리턴하는함수형인터페이스
04. 기본형타입의함수형인퍼페이스
1. 함수형 인터페이스
16. Lambda
16-3. 함수형 인터페이스
(3 +3) * 2
10 > 5 and 10 < 6
10 > 5 or 10 < 6
1. 함수형 인터페이스
16. Lambda
16-3. 함수형 인터페이스
05. Stream과같이사용하는함수형인터페이스
1. 타입 추론
16. Lambda
16-3. 타입 추론
타입 추론
• 자바컴파일러는람다표현식이사용된컨텍스트(대상형식)를이용해서람다표현식과관련된함수형인터페이스를추론한다.
• 즉,대상형식을이용해서함수디스크립터를알수있으므로컴파일러는람다의시그니처도추론할수있다.
• 결과적으로컴파일러는람다표현식의파라미터형식에접근할수있으므로람다문법에서이를생략할수있다.
• 즉,자바컴파일러는다음처럼람다파라미터형식을추론할수있다.
• 여러파라미터를포함하는람다표현식에서는코드가독성향상이더두드러진다.
interface IfRnArg {
int method(int a, int b);
}
IfRnArg ira = new IfRnNoArg () {
int method(int a, int b)
{
return a + b;
}
};
IfRnArg ira = (int a, int b) -> {
return a + b;
};
IfRnArg ira = (a, b) -> {
return a + b;
};

More Related Content

PDF
Java 이해하기 쉬운 코드 20210405
PDF
Java lambda
PDF
Javascript
PPTX
0.javascript기본(~3일차내)
PDF
Java 변수자료형
PDF
Javascript 교육자료 pdf
PPTX
자바스크립트 기초문법~함수기초
PDF
Java class
Java 이해하기 쉬운 코드 20210405
Java lambda
Javascript
0.javascript기본(~3일차내)
Java 변수자료형
Javascript 교육자료 pdf
자바스크립트 기초문법~함수기초
Java class

What's hot (20)

DOCX
Javascript 완벽 가이드 정리
PDF
Swift3 subscript inheritance initialization
PDF
Swift3 typecasting nested_type
PDF
스위프트, 코틀린과 모던언어의 특징 (Swift, Kotlin and Modern Languages)
PPTX
프론트엔드스터디 E04 js function
PDF
Swift3 generic
PDF
Lambda 란 무엇인가
PDF
Realm.io for iOS
PPTX
프론트엔드스터디 E03 - Javascript intro.
PPTX
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
PPTX
자바스크립트 함수
PDF
Java 8 api :: lambda 이용하기
PDF
스위프트 성능 이해하기
PPTX
프론트엔드스터디 E05 js closure oop
PDF
JDK 변천사
PPTX
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
PDF
일단 시작하는 코틀린
PDF
1.Startup JavaScript - 프로그래밍 기초
PPTX
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
PPTX
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
Javascript 완벽 가이드 정리
Swift3 subscript inheritance initialization
Swift3 typecasting nested_type
스위프트, 코틀린과 모던언어의 특징 (Swift, Kotlin and Modern Languages)
프론트엔드스터디 E04 js function
Swift3 generic
Lambda 란 무엇인가
Realm.io for iOS
프론트엔드스터디 E03 - Javascript intro.
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
자바스크립트 함수
Java 8 api :: lambda 이용하기
스위프트 성능 이해하기
프론트엔드스터디 E05 js closure oop
JDK 변천사
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
일단 시작하는 코틀린
1.Startup JavaScript - 프로그래밍 기초
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
Ad

Similar to Java_10 람다 (20)

PDF
자바8강의 1강. lambda expression
PPTX
2. lambda expression
PPTX
자바 8 학습
PDF
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
PDF
SpringCamp 2013 : About Jdk8
PDF
나에 첫번째 자바8 람다식 지앤선
PDF
Java jungsuk3 ch14_lambda_stream
PPTX
Java8 람다
PPTX
Java, android 스터티2
PPTX
PDF
자바8 람다식 소개
PDF
Java8 & Lambda
PDF
5장 객체와클래스
PPTX
객체지향 프로그래밍 기본
PPTX
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)
PDF
Java 강의자료 ed11
PDF
Java(3/4)
PDF
Java(1/4)
PDF
Java_05 class
PPTX
Just java
자바8강의 1강. lambda expression
2. lambda expression
자바 8 학습
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
SpringCamp 2013 : About Jdk8
나에 첫번째 자바8 람다식 지앤선
Java jungsuk3 ch14_lambda_stream
Java8 람다
Java, android 스터티2
자바8 람다식 소개
Java8 & Lambda
5장 객체와클래스
객체지향 프로그래밍 기본
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)
Java 강의자료 ed11
Java(3/4)
Java(1/4)
Java_05 class
Just java
Ad

More from Hong Hyo Sang (10)

PDF
Java_09 이너클래스
PDF
Java_08 collection
PDF
Java_07 제너릭 메서드
PDF
Java_03 연산자
PDF
Java_06 상속
PDF
Java_04 제어
PDF
Java_02 변수자료형
PDF
Java_01 기초
PDF
Java 이해하기 쉬운 코드
PDF
소프트웨어 개선 그룹(Sig) 개발 원칙
Java_09 이너클래스
Java_08 collection
Java_07 제너릭 메서드
Java_03 연산자
Java_06 상속
Java_04 제어
Java_02 변수자료형
Java_01 기초
Java 이해하기 쉬운 코드
소프트웨어 개선 그룹(Sig) 개발 원칙

Java_10 람다

  • 1. JAVA Lambda 작성자 : 홍효상 이메일 : hyomee@naver.com 소스 : https://github.com/hyomee/JAVA_EDU 프로그램은 사람이 이해하는 코드를 작성. 느려도 꾸준하면 경기에서 이긴다.
  • 2. Content 소스 : https://github.com/hyomee/JAVABASIC 16. Lambda 1. 익명(Anonymous) Class 2. Lambda 3. 함수형 인터페이스 4. 타입 추론
  • 3. 1. 익명(Anonymous) Class 16. Lambda • 프로그램에서일시적으로한번만사용되고버려지는객체를매번객체를만들어야하나? • 확장성을고려해서객체를생성해야하는데…수정이편할까? • 사용처:인스턴스변수,인스턴스메서드,인스턴스메소드의매개변수 “ 이름을 알 수 없는 객체로 한번만 사용하고 버려지는 객체” 16-1. 익명(Anonymous) Class 사용하는 이유 • 클래스생성 • 인터페이스의구현 구현 하는 방법 01. 클래스생성 ➢ 1.추상클래스생성 예제 : AnonymousAbstract.java 예제 : https://github.com/hyomee/JAVA_EDU/tree/main/L/src/com/hyomee/anonymous ➢ 2. 추상클래스 구현 Class 생성 예제 : AnonymousAbstarctClass.java - 인스턴스 변수 익명(Anonymous) Class • 클래스를정의하지않고필요할때이름없이즉시선언하고인스턴스화해서사용 • 객체안에만드는로컬클래스와동일하다 • new수식이올수있는곳어디든지사용가능하나생성자는정의할수없음 • 익명클래스내부에서외부의메소드내변수를참조할때는메소드의지역변수중 final로선언된변수만참조가능 -변수는Stack에있고객체는Heap에있음,즉Method실행이끝나고Stack는사라지지만 Heap에있는Method는사라지지않기때문
  • 4. 1. 익명(Anonymous) Class 16. Lambda 16-1. 익명(Anonymous) Class 예제 : https://github.com/hyomee/JAVA_EDU/tree/main/L/src/com/hyomee/anonymous ➢ 2.추상클래스 구현 Class 생성 예제 : AnonymousAbstarctClass.java - 인스턴스 Method 예제 : AnonymousAbstarctClass.java - 인스턴스 메서드의 파라메터 ➢ 3. 실행 ➢ 2. 추상클래스 구현 Class 생성 예제 : AnonymousMain.java 파라메터로 객체 생성 하여 파라메터로 전달 예제 : AnonymousChild .java 참조
  • 5. 1. 익명(Anonymous) Class 16. Lambda 16-1. 익명(Anonymous) Class 02. 인터페이스의구현 ➢ 1. 인터페이스구현 예제 : https://github.com/hyomee/JAVA_EDU/tree/main/L/src/com/hyomee/anonymous 예제 : AnonymousInterface.java ➢ 2. 인터페이스구현체 예제 : AnonymousInterfaceClass.java ➢ 3. 실행 익명 객체 생성 람다 생성
  • 6. 1. Lambda 16. Lambda • 자바8이전에는Method라는함수형태가존재하지만객체를통해서만접근이가능하고,Method그자체를변수로사용하지는못한다. • 자바8에서는함수를변수처럼사용할수있기때문에,파라미터로다른메소드의인자로전달할수있고,리턴값으로함수를받을수도있다. • 이름없는익명함수구현에서주로사용하며함수형인터페이스의인스턴스(구현객체)를표현 :함수형인터페이스(추상메소드가하나인인터페이스)를구현객체를람다식으로표현 “ 자바에서 함수형 프로그램 방식으로 구현 해 주는 문법” 16-2. Lambda 람다 ( Lambda ) JAVA에서 함수형 프로그램 ➢ 함수 • 함수정의 ->구현 ->사용 void fun() { … } fun() ➢ JAVA • 함수는없음 • Class, Interface 의Method class C { void method() { ….. } } C c = new C(); c.method(); ➢ JAVA Lambda 익명 멤버 변수로 구현 방법 적용 • 하나의추상메서드만있는interface 생성-.>익명 Class (멤버변수)작성->Lambda로변경 Interface Example { R apply(A arg); } 01. 인터페이스 Example exp = new Example() { @Override public R apply(A arg) { body } }; 02. 인스턴스생성 Example exp = (arg) { body }; 03. 인자목록과함수몸통 을제외하고모두제거 Example exp = (arg) - >{ body } ; 04. 문법적용
  • 7. 1. Lambda 16. Lambda “ 자바에서 함수형 프로그램 방식으로 구현 해 주는 문법” 16-2. Lambda 표현식 • (arg1, arg2...) -> { body } • (params) -> expression • (params) -> statement • (params) -> { statements } • (int a, int b) -> { return a + b; }; > 타입 추론에 의한 타입 제거 : (a, b) -> { return a+b } ; > 무엇인가를 반환 하거나 한 줄 표현식이 가능 하면 return 삭 제 : (a, b) -> a+b; • () -> System.out.println("Hello "); > 파라미터없고 Hello 출력 System.out::println; • () -> System.out.println("Hello "); // 파라미터 없고 Hello 출력 • (String s) -> { System.out.println(s); } // String s입력매개변수로 받아 출력 • () -> 8514790 //파라미터없고 8514790가 리턴 • () -> { return 3.14 }; //파라미터없고 3.14리턴
  • 8. 1. Lambda 16. Lambda 16-2. Lambda 추상 메서드를 이용한 람다 class C { void method() { ….. } } C c = new C(); c.method(); interface 익명 이너 클래스 함수 실헹 리턴 : 없음 매개 : 있음 interface IfNoRnNoArg { void method(); } IfNoRnNoArg iNrNa = new IfNoRnNoArg() { void method () { … } }; IfNoRnNoArg iNrNa = ( ) - > { … }; iNrNa.method(); 리턴 : 없음 매개 : 있음 interface IfNoRnArg { void method(int a); } IfNoRnArg iNra = new IfNoRnArg() { void method( int a ) { … } }; IfNoRnArg iNra = (int a) -> { … } iNra.method(1); 리턴 : 없음 매개 : 있음 interface IfRnNoArg { int method(); } IfRnNoArg irNa = new IfRnNoArg () { int method() { int a = 0 … return a } }; IfRnNoArg irNa = () -> { int a = 10; return a; }; irNa.method(); 리턴 : 없음 매개 : 있음 interface IfRnArg { int method(int a, int b); } IfRnArg ira = new IfRnNoArg () { int method(int a, int b) { return a + b; } }; IfRnArg ira = (a, b) -> { return a + b; }; ira.method(5, 10) 배열 interface IfArray { int [] method(int length) } IfRnArg ira = new IfArray () { int method(int length) { return new int[length]; } }; IfRnArg ira = (length) -> { return new int[length]; }; or IfRnArg ira = int[] :: new; int [] a1 = ira. ira.method(10); 예제 : LambdaFunctional.java
  • 9. 1. Lambda 16. Lambda 16-2. Lambda 추상 메서드를 이용한 람다 예제 : LambdaFunctional.java
  • 10. 1. Lambda 16. Lambda 16-2. Lambda 존재 하는 객체 람다 표현 예제 : ExistsClassLamda.java 01. 객체생성 람다로 객체 생성 방법 람다 선언 방법 : 클래스객체 :: 인스턴스메서드명
  • 11. 1. Lambda 16. Lambda 16-2. Lambda 존재 하는 객체 람다 표현 예제 : ExistsClassLamda.java 02. 기존 객체의메서드실행 클래스의 기존 함수 지정 람다 선언 방법 : 클래스객체 :: 인스턴스메서드명 클래스의 기존 함수 선택 클래스의 기존 함수 선택 람다로 Class 생성
  • 12. 1. Lambda 16. Lambda 16-2. Lambda 존재 하는 객체 람다 표현 예제 : ExistsClassLamda.java 03. Static 메서드실행 람다 선언 방법 : 클래스객체 :: 정적메서드명 04. 첫번째 매개변수로 전달된 매개변수를 사용 함 객체를 메소드 내부로 보냈으므로 메서드 내부에서 생성 할 필요 없음
  • 13. 1. 함수형 인터페이스 16. Lambda 16-3. 함수형 인터페이스 함수형 인터페이스 • 추상Method가하나뿐인인터페이스(Single Abstract Method:SAM) • 여러개의Default Method가있을수있다. • @FunctionalInterface 어노테이션은함수형인터페이스이다 • Runnable, ActionListener, Comparable은함수형인터페이스 :자바8이전:익명클래스이용 :자바8이후:람다식이용 java.util.function 에서 제공 하는 함수형 인터페이스 • Predicate: 하나의매개변수를주는boolean형을 반환 • Consumer:하나의매개변수를주는void형accept 메소드 • Function: T유형의인수를취하고R유형의결과를반환하는추상메소드apply • Supplier: 메소드인자는없고T유형의결과를반환하는추상메소드get • UnaryOperator:하나의인자와리턴타입을가진다. T->T • BinaryOperator:두개의인수,동일한타입의결과를반환하는추상메서드apply 01. 가장기본이되는함수형인터페이스 02. 파라메터가두개인함수형인터페이스 03. 파라메터를받고동일한타입을리턴하는함수형인터페이스 04. 기본형타입의함수형인퍼페이스
  • 14. 1. 함수형 인터페이스 16. Lambda 16-3. 함수형 인터페이스 (3 +3) * 2 10 > 5 and 10 < 6 10 > 5 or 10 < 6
  • 15. 1. 함수형 인터페이스 16. Lambda 16-3. 함수형 인터페이스 05. Stream과같이사용하는함수형인터페이스
  • 16. 1. 타입 추론 16. Lambda 16-3. 타입 추론 타입 추론 • 자바컴파일러는람다표현식이사용된컨텍스트(대상형식)를이용해서람다표현식과관련된함수형인터페이스를추론한다. • 즉,대상형식을이용해서함수디스크립터를알수있으므로컴파일러는람다의시그니처도추론할수있다. • 결과적으로컴파일러는람다표현식의파라미터형식에접근할수있으므로람다문법에서이를생략할수있다. • 즉,자바컴파일러는다음처럼람다파라미터형식을추론할수있다. • 여러파라미터를포함하는람다표현식에서는코드가독성향상이더두드러진다. interface IfRnArg { int method(int a, int b); } IfRnArg ira = new IfRnNoArg () { int method(int a, int b) { return a + b; } }; IfRnArg ira = (int a, int b) -> { return a + b; }; IfRnArg ira = (a, b) -> { return a + b; };