Lambda Expression 이라고 얘기합니다. jdk8에 포함된 기능입니다.
인터페이스의 메소드가 하나일 때, 이것에 대한 인터페이스를 만들고, 익명 클래스로 만들어서 처리하는 것을 단순화 시켰습니다.
http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
예제가 잘 되어 있습니다.
최종 결과는 다음과 같은 코드입니다. C++에서 보던 -> 기호 때문에 당황스럽군요.
printPersons( roster, (Person p) -> p.getGender() == Person.Sex.MALE && p.getAge() >= 18 && p.getAge() <= 25
);
람다 표현식을 사용하기 전의 코드는 다음과 같이 익명 클래스로 되어 있습니다.
printPersons(
roster,
new CheckPerson() {
public boolean test(Person p) {
return p.getGender() == Person.Sex.MALE
&& p.getAge() >= 18
&& p.getAge() <= 25;
}
}
);
interface CheckPerson {
boolean test(Person p);
}
확실히 interface 파일 하나 줄이고, 코드를 1/3로 줄이는 효과가 있습니다.
람다 표현식을 사용하려면 아직 개발자 미리보기 버전을 설치해야 합니다.
갑자기 이 노래가 생각납니다.
Lambada