【发布时间】:2023-03-30 16:22:02
【问题描述】:
叫什么更好
names.stream().forEach(System.out::println);
比
names.stream().forEach(n -> System.out.println(n));
尽管您必须编写更少的代码?在 Java 8 中引入方法引用还有其他好处吗?
【问题讨论】:
-
尽管您必须编写更少的代码,但 lambdas 有什么优势吗?
-
请注意,有很多示例方法引用实际上意味着更多代码(例如
MyClassWithLongName::aStaticMethod)。即使在那里,方法引用仍然是一个优势,因为它减少了出错的机会。 -
方法引用的动机很简单(并且与许多人认为的“更短”几乎没有多大关系。)方法具有名称,并引用某些东西顾名思义,通常比其他名称更清晰。
-
方法引用的另一个有用之处是它们默认符合 java.util.function 功能接口,因此您可以将方法引用用于诸如谓词或供应商之类的东西。跨度>