无涯教程-Java8 - 方法引用

56 阅读1分钟

简单地说,方法引用(Method References)就是一个Lambda表达式。在Java 8中,无涯教程会使用Lambda表达式创建匿名方法,但是有时候,Lambda表达式可能仅仅调用一个已存在的方法,而不做任何其它事,对于这种情况,通过一个方法名字来引用这个已存在的方法会更加清晰,Java 8的方法引用允许这样做。方法引用是一个更加紧凑,易读的Lambda表达式,注意方法引用是一个Lambda表达式,其中方法引用的操作符是双冒号"::"。

方法引用可用于以下类型的方法-

  • Static methods  静态方法
  • Instance methods 实例方法
  • Constructors using new operator (TreeSet::new) 构造方法

方法引用示例

使用您选择的任何编辑器创建以下Java程序,例如,C:\> JAVA.

Java8Tester.java

import java.util.List;
import java.util.ArrayList;

public class Java8Tester {

public static void main(String args[]) { List names = new ArrayList();

  names</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Mahesh"</span><span class="pun">);</span><span class="pln">
  names</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Suresh"</span><span class="pun">);</span><span class="pln">
  names</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Ramesh"</span><span class="pun">);</span><span class="pln">
  names</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Naresh"</span><span class="pun">);</span><span class="pln">
  names</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Kalpesh"</span><span class="pun">);</span><span class="pln">
	
  names</span><span class="pun">.</span><span class="pln">forEach</span><span class="pun">(</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">::</span><span class="pln">println</span><span class="pun">);</span><span class="pln">

} }

在这里,无涯教程传递了System.out::println方法作为静态方法引用。

使用javac编译器编译类,如下所示-

C:\JAVA>javac Java8Tester.java

现在运行Java8Tester,如下所示-

C:\JAVA>java Java8Tester

它应该生成以下输出-

Mahesh
Suresh
Ramesh
Naresh
Kalpesh

参考链接

www.learnfk.com/java/java8-…