java&spring
[Java] 람다식
sungjine
2016. 12. 17. 23:47
반응형
먼저 람다식을 설명하면 메서드를 하나의 식으로 표현하는 것으로 객체 지향 방식이라기보다는 함수 지향 방식에 가깝다.
* 함수 지향 방식에 가깝다고 해도 자바에서 람다 또한 결국 객체이다.
때문에 람다식은 함수 형태 만으로도 사용할 수 있다.
import java.util.stream.IntStream;
IntStream.range(0, 10).forEach(n -> System.out.println(n));
아래는 다양하게 작성해본 기본적인 람다식의 형태이다.
(int n, String str) -> { return n + str; }
(int n, String str) -> n + str
(n, str) -> n + str
(str) -> str + 1
str -> str
() -> "Hello"
() -> {}
람다식을 그냥 사용할 수는 없고 람다식을 사용하는 특정 메서드에 위와 같이 바로 사용하던가 람다식을 담아둘 수 있는 객체를 만든 후에 사용해야 하는데 interface를 활용하는 방법이 있다.
@FunctionalInterface
interface InterfaceRamda {
int test(int i);
}
public class ramdaTest {
public static void main(String[] args){
InterfaceRamda interfaceRamda = i -> i + 1;
System.out.println(interfaceRamda.test(11));
}
}
출력되는 결과는 12이다.
주의할 점은 interface에 하나의 메서드만 존재해야 한다는 것이다.
그래서 람다라는 것을 명시적으로 표현하기 위해 @FunctionalInterface를 쓰는데 두 개 이상의 메서드가 존재하면 에러가 난다.
반응형