sungwony

[JAVA8] 람다(Lambda) 표현식 본문

language/java

[JAVA8] 람다(Lambda) 표현식

일상이상삼상 2018. 6. 26. 15:34

람다(lambda) 표현식은 Java 8의 가장 특징적인 표현식.

람다 표현식은 함수형 프로그래밍에 유용하고 개발을 용이하게 한다.


람다 표현식은 인터페이스 메소드가 "하나"인 것들만 적용이 가능하다.

람다 표현식은 익명 클래스로 전환이 가능하며, 익명 클래스는 람다 표현식으로 전환이 가능하다.


기본 문법

람다 표현식은 3 부분으로 구성되어 있다.

 매개 변수 목록

화살표 토큰(Arrow Token) 

처리 식

 (int x, int y)

 -> 

 x+y 



아래는 인터페이스를 익명클래스와 람다표현식으로 선언한 예



Optional type declaration

- No need to declare the type of a parameter. The compiler can inference the same from the value of the parameter.

- 매개 변수의 유형을 선언 할 필요가 없다. 컴파일러가 매개 변수의 값으로 부터 추론.


Optional parenthesis around parameter 

- No need to declare a single parameter in parenthesis. For multiple parameters, parentheses are required.

- 단일 매개 변수 선언시 괄호를 선언할 필요가 없다. 여러 매개 변수의 경우 괄호가 필요.


Optional curly braces

- No need to use curly braces in expression body if the body contains a single statement.

- 본문이 단일 문이라면 중괄호를 사용할 필요가 없다.


Optional return keyword

- The compiler automatically returns the value if the body has a single expression to return the value.

- 본문이 값을 반환하는 단일 표현식이라면 컴파일러가 자동으로 값을 반환.



Functional Interface


람다 표현식에 활용할 목적으로 단일 메소드로 인터페이스를 작성한 경우 이를 'Functional(기능적) Interface' 라고 한다.  혹, 다른 사람과 함께 개발하는 경우 해당 인터페이스의 쓰임을 오해해 다른 메소드를 추가할 수 있다. 자바8에서는 이를 미연에 방지하고자 @FunctionalInterface 어노테이션을 사용하여 람다 표현식을 위한 기능적 인터페이스임을 알릴 수 있다.



'language > java' 카테고리의 다른 글

[JAVA8] 메소드 참조  (0) 2018.06.28
[JAVA8] Stream  (0) 2018.06.27
[JAVA8] java.util.function 패키지  (0) 2018.06.27
[JAVA8] 자바8 목차  (0) 2018.06.26
JVM(Java Virtual Machine) Runtime Data Area  (0) 2018.02.14