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로 줄이는 효과가 있습니다.

람다 표현식을 사용하려면 아직 개발자 미리보기 버전을 설치해야 합니다.

http://jdk8.java.net



갑자기 이 노래가 생각납니다.

Lambada




+ Recent posts