方法引用 方法引用是一個更加緊湊,易讀的 Lambda 表達式。 當Lambda表達式中只是執行一個已存在方法調用時使用,且方法引用所使用方法的入參和返回值與lambda表達式實現的函數式介面的入參和返回值一致。 1 幾種類型 1.1 方法引用 對象引用 :: 實例方法名 public class ...
方法引用
方法引用是一個更加緊湊,易讀的 Lambda 表達式。
當Lambda表達式中只是執行一個已存在方法調用時使用,且方法引用所使用方法的入參和返回值與lambda表達式實現的函數式介面的入參和返回值一致。
1 幾種類型
1.1 方法引用
對象引用 :: 實例方法名
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);
}
}
1.2 構造器引用
類名 :: new
// Lambda表達式
name -> new Person(name)
// 方法引用
Person::new
1.3 數組引用
類型[] :: new
// Lambda表達式
length -> new int[length]
// 方法引用
int[]::new