1. 람다 표현식(lambda)은 나중에 한번 이상 실행할 수 있도록 전달할 수 있는 코드 블록이다.
- 과거에 자바는 어딘가에 코드 블록을 전달하는 일이 쉽지 않았다.(즉, 단순히 코드 블록을 전달할 수 없음.)
자바는 객체지향 언어기 때문에, 원하는 코드가 있는 메서드를 포함하는 클래스의 객체를 생성해야했음.
2. 람다 표현식 문법
- (파라미터, 화살표->,표현식)
* 예 : (String first, String second) -> Integer.compare(first.length(), second.length())
* 자바는 타입 결합이 강한 언어기 때문에 타입도 지정해야함.
- 표현식 하나로 표현할 수 없는 계산은 중괄호{}를 사용하고 명시적 return문 사용.
*예 : (String first, String second) ->{
if (first.length() < second.length()) return -1;
else return 0;
}
- 파라미터 받지 않는 경우
*예: ()->{.....표현식}
()->{ for(int i = 0; i<1000; i++) dowork(); }
- 람다 표현식의 파라미터를 추정할 수 있는 경우 타입 생략 가능.
*예: Comparatr<String> comp = (first, second)
->Integer.compare(first.length(), second.length());
- 메서드에서 추정되는 타입 한개를 파라미터로 괄호 생략 가능.
*예: EventHandler<ActionEvent> listener = event -> System.out.println("test");
- 람다 표현식의 결과 타입은 지정하지 않는다. 결과 타입은 항상 문맥으로 부터 추정됨.
* 람다 파라미터에 애너테이션(annotation)이나 final 수정자 붙일 수 있음. (메서드 파라미터와 동일한 방식)
(final String name) -> ...
(@NonNull String name) -> ...
- 단일 추상 메서드를 갖춘 인터페이스 객체를 기대할때 람다 표현식 사용 가능.
위와 같은 인터페이스를 함수형 인터페이스라고 함.
[람다 표현식을 객체가 아니라 함수로 생각하고, 함수형 인터페이스에 전달할 수 있다고 인식하는 것이 가장 좋음.]
'잡학다식 > IT 컬럼' 카테고리의 다른 글
NSML 네이버 딥러닝 클라우드 플랫폼 알아보기! (0) | 2017.10.26 |
---|---|
블록 체인이란? (0) | 2017.09.18 |
[IT 책갈피] Spring Framework 3.x -> 4.x Web Application migration (0) | 2017.03.28 |
[IT 첫걸음] 보기 좋은 코드가 고치기도 쉽다. (0) | 2017.03.21 |
[IT첫걸음] 코딩 작명 비법 (0) | 2017.03.12 |