调用
更好names.stream().forEach(System.out::println);
比
names.stream().forEach(n -> System.out.println(n));
尽管你必须编写更少的代码?在Java 8中引入方法引用还有其他优点吗?
答案 0 :(得分:5)
尽管你必须编写更少的代码?在Java 8中引入方法引用还有其他优点吗?
考虑引入语言功能,必须编写更少的代码就足够了。 C#中有一个类似的功能,称为method groups,可以更轻松地编写使用委托的代码。 Lambdas是匿名类的简写,匿名类可以被认为是命名类的简写。一个人可以合法地称他们为#synt;糖,#34;但所有这些功能都可以帮助你编写更少的代码。
除了让您缩短代码之外,该功能还有助于帮助Java编译器的设计人员生成更高效的代码。例如,可以避免为包装方法引用的每个lambda生成全新类型。
答案 1 :(得分:0)
嗯,只是编写更少代码的一个优点是,第一个示例不必知道参数,只要该功能接口的实现具有相同的签名( - >是正确的)您的代码get编译。
如果功能界面的签名发生变化并且实现的签名发生类似变化,则只需要在那里应用这些更改,而不是在胶水代码上。