Java8中的方法引用是什么?

Java中的Lambda表达式使您可以将功能作为参数传递给方法。您也可以使用lambda表达式调用现有方法。

list.forEach(n -> System.out.println(n));

方法引用是简单,易于阅读的lambda表达式,可通过lambda表达式来调用/引用以及现有方法的名称。

语法

Object:methodName

示例

假设,如果我们有一个名为myInterface的接口,我们可以将功能/实现作为对象值传递,如下所示-

interface myInterface{
   void greet();
}
public class MethodReferences {
   public static void main(String args[]) {
      myInterface in = ()->System.out.println("Sample method");;
      in.greet();
   }
}

如果我们已经有此方法的实现,则可以将lambda表达式用作-

interface myInterface{
   void greet();
}
public class MethodReferences {
   public void demo() {
      System.out.println("Sample method");
   }
   public static void main(String args[]) {
      MethodReferences obj = new MethodReferences();
      myInterface in = ()-> obj.demo();
      in.greet();
   }
}

您可以使用方法引用而不是lambda表达式来引用现有方法,例如-

interface myInterface{
   void greet();
}
public class MethodReferences {
   public void demo() {
      System.out.println("Sample method");
   }
   public static void main(String args[]) {
      MethodReferences obj = new MethodReferences();
      myInterface in = obj::demo;
      in.greet();
   }
}

输出结果

Sample method