Java 8 - 为什么他们提供方法引用?

时间:2015-01-25 11:46:45

标签: java lambda java-8

调用

更好
names.stream().forEach(System.out::println);

names.stream().forEach(n -> System.out.println(n));

尽管你必须编写更少的代码?在Java 8中引入方法引用还有其他优点吗?

2 个答案:

答案 0 :(得分:5)

  

尽管你必须编写更少的代码?在Java 8中引入方法引用还有其他优点吗?

考虑引入语言功能,必须编写更少的代码就足够了。 C#中有一个类似的功能,称为method groups,可以更轻松地编写使用委托的代码。 Lambdas是匿名类的简写,匿名类可以被认为是命名类的简写。一个人可以合法地称他们为#synt;糖,#34;但所有这些功能都可以帮助你编写更少的代码。

除了让您缩短代码之外,该功能还有助于帮助Java编译器的设计人员生成更高效的代码。例如,可以避免为包装方法引用的每个lambda生成全新类型。

答案 1 :(得分:0)

嗯,只是编写更少代码的一个优点是,第一个示例不必知道参数,只要该功能接口的实现具有相同的签名( - >是正确的)您的代码get编译。

如果功能界面的签名发生变化并且实现的签名发生类似变化,则只需要在那里应用这些更改,而不是在胶水代码上。