Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- SQL
- mybatis
- hadoop
- IntelliJ
- 공정능력
- window
- Spring
- SSL
- GIT
- Kotlin
- Sqoop
- Python
- 보조정렬
- tomcat
- Java
- es6
- xPlatform
- mapreduce
- JavaScript
- NPM
- Android
- table
- plugin
- SPC
- react
- Eclipse
- MSSQL
- vaadin
- Express
- R
Archives
- Today
- Total
DBILITY
java lambda 본문
반응형
자바는 매개변수로 인스턴스만 전달 가능했다.
첫번째 쓰레드를 보면 run 메서드만 실행하려 해도 방법이 없으므로,
Runnable객체를 생성해서 전달한다.
람다식은 함수를 매개변수로 넘길 수 있도록,
인터페이스 중 단 하나의 메서드만 존재하는 함수형 인터페이스 (@FunctionalInterface)를 준비
익명메서드로 전환한다.
자바 람다는 핵심적인 3개의 부분으로 구성
( "함수의 인자"->"함수의 내부 구현코드" )
괄호 안의 매개 변수 집합,
화살표.
그리고, 하나의 표현식이거나 코드 블록이 될 수 있는 바디
※ 매개변수는 타입을 명시하지 않을 경우 타입을 추론한다.
Interface가 하나만 존재해야 하는 이유이기도 하나보다.
람다식 형태
- ( parameters ) -> expression body
- ( parameters ) -> { expression body }
- () -> { expression body }
- () -> expression body
package com.dbility.bigdata.lambda.test;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Date;
import java.util.TimeZone;
public class Test01 {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Hello World~");
}
}).start();
final String str1 = "Hello Java8 Lambda Expression 1";
String str2 = "Hello Java8 Lambda Expression 2";
/* 외부변수 포획, 값이 변하지 않아야함 */
new Thread(()->{ System.out.println(str1); }).start();
/* 값이 변한다면 컴파일러 오류 발생함. 변하지 않는 다면 사실상 final로 간주 */
//str2 = "No~~~~"; //str2의 주석을 해제하면 바로 아래 컴파일러 오류 발생
new Thread(()->System.out.println(str2)).start();
new Thread(() -> { System.out.println("Hello Java8 Lambda Expression 3"); }).start();
new Thread(() -> System.out.println("Hello Java8 Lambda Expression 4")).start();
/* 타입추론
* 괄호안에 타입지정이 없음
* Comparator.compare는 사전순서로 문자열을 비교하는 method로 API를 확인해 보면 @FunctionalInterface 있음
* 이전이면 음수 같으면 0 이후면 양수 반환
**/
Comparator<String> c = (l,r)->{
System.out.println(l + " compare to " + r);
return l.compareTo(r);
};
int result = c.compare("a", "b");
System.out.println(result);
}
}
반응형
'java > basic' 카테고리의 다른 글
java lambda stream 실습 (0) | 2018.05.27 |
---|---|
java lambda map,reduce,filter summary (0) | 2018.05.25 |
maven uber-jar packaging (0) | 2018.04.30 |
maven build war package exclude paths or files ( 특정 경로 제외 ) (0) | 2018.04.11 |
java timeserver 시간 확인하기 (0) | 2017.12.26 |
Comments