tl; dr : 그것은 대부분 구문 론적 설탕이지만, 더 좋은 구문은 끝없는 읽을 수없는 괄호와 괄호로 끝나는 많은 것들을 실용적으로 만듭니다.
람다는 Java보다 훨씬 나이가 들기 때문에 실제로 다른 방법 입니다. 단일 메소드를 가진 익명의 내부 클래스는 (가장 가까운) Java가 람다에 가장 가깝습니다. 그것은 얼마 동안 "충분히 좋은"근사치이지만 매우 불쾌한 구문을 가지고 있습니다.
표면적으로 Java 8 람다는 구문 설탕 이상의 것 같지 않지만 표면 아래를 보면 많은 흥미로운 추상화가 나타납니다. 예를 들어 JVM 스펙은 람다를 "true"오브젝트와 상당히 다르게 처리 하며 오브젝트가있는 것처럼 처리 할 수 있지만 JVM은이를 구현할 필요가 없습니다.
그러나 모든 기술적 인 속임수는 흥미롭고 관련성이 있지만 (JVM에서 향후 최적화가 가능하기 때문에!) 실질적인 이점은 구문 설탕 부분에 "그냥"있습니다.
더 읽기 쉬운 것 :
myCollection.map(new Mapper<String,String>() {
public String map(String input) {
return new StringBuilder(input).reverse().toString();
}
});
또는:
myCollection.map(element -> new StringBuilder(element).reverse().toString());
또는 (람다 대신 메소드 핸들 사용) :
myCollection.map(String::toUpperCase);
이전에 5 줄의 코드 (3 개가 완전히 지루한 코드) 인 간결한 방식으로 마침내 표현할 수 있다는 사실은 실제적인 것 (그러나 가능한 것은 아니지만 부여 된 것) 의 실제 변화를 가져옵니다 .