tl; dr:虽然它主要是语法糖,但是更好的语法使许多事情变得实用,这些事情过去常常以无休止的花括号和括号结尾。
那么,它实际上是围绕为lambda表达式是其他的方式很多比Java更旧。具有单个方法的匿名内部类是(最接近)lambdas的Java。这种近似在一段时间内“足够好”,但是语法非常讨厌。
从表面上看,Java 8 lambda似乎不过是语法糖,但是当您从表面看时,会看到大量有趣的抽象。例如,JVM规范对lambda的处理与“ 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());
或(使用方法句柄而不是lambda):
myCollection.map(String::toUpperCase);
您可以在一个简洁的方式将其以前是5行代码,终于表明了一个事实(这3完全无聊的)带来了什么是真正的变化实际(但不是什么是可能的,授予)。