方法引用是一個更加緊湊,易讀的 Lambda 表達式。java
當Lambda表達式中只是執行一個已存在方法調用時使用,且方法引用所使用方法的入參和返回值與lambda表達式實現的函數式接口的入參和返回值一致。數組
public class Test{ public static void main(String[] args){ Test test = new Test(); // lambda表達式使用: Arrays.asList(new String[] {"a", "c", "b"}).stream().forEach(s -> test.println(s)); // 特定對象的實例方法引用: Arrays.asList(new String[] {"a", "c", "b"}).stream().forEach(test :: println); } public void println(String s){ System.out.println(s); } }
public class Test{ public static void main(String[] args){ //lambda表達式使用: Arrays.asList(new String[] {"a", "c", "b"}).stream().forEach(s -> Test.println(s)); //靜態方法引用: Arrays.asList(new String[] {"a", "c", "b"}).stream().forEach(Test :: println); } public static void println(String s){ System.out.println(s); } }
public class Test{ public static void main(String[] args){ String[] strArray = {"a", "c", "b"}; //lambda表達式使用: Arrays.sort(strArray, (s1,s2) -> s1.compareToIgnoreCase(s2)); //類名 :: 實例方法名引用: Arrays.sort(strArray, String::compareToIgnoreCase); } }
// Lambda表達式 name -> new Person(name) // 方法引用 Person::new
// Lambda表達式 length -> new int[length] // 方法引用 int[]::new