[Java] Java8과 Lambda
🙆♂️ import 🙇♂️
Lambda
Java 8
에서는 기명 메소드(Named Method)
를 일급 값(일급 시민)
으로 취급할 뿐 아니라,
Lambda
또는 익명 함수(Anonymous Functions)
를 포함하여 함수도 값으로 취급할 수 있다.
예를 들면 (int x) -> x + 1
즉 x
라는 인수로 호출할 경우 해당 인수에 1을 더한 값을 반환하는 동작을 수행하도록 코드를 구현할 수 있다.
기존에 참조할 만한 클래스나 메소드가 없을 경우 새로운 Lambda
문법을 이용해 간결하고 즉각적으로 코드 구현이 가능한 것이다.
Lambda
문법 형식으로 구현된 Program을 Functional Programming
,
즉 Function을 일급 값(일급 시민)으로 넘겨주는 Program을 구현한다 라고 표현한다.
이를 코드로 살펴보면 아래 예시와 같다.
// Java 8 이전
File[] hiddenFiles = new File(".").listFiles(new FileFilter() {
public boolean accept(File file) {
return file.isHidden();
}
});
// Java 8 이후
File[] hiddenFiles = new File(".").listFiles(File::isHidden);
위 코드 예시 처럼 Java 8 이후 부터는,
메소드 참조(::)
문법을 이용해 직접 함수(isHidden()
)를 메소드(listFiles()
)로 전달 할 수 있다.
댓글남기기