方法參考
方法參考是一個更加緊湊,易讀的 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/143909.html
標籤:Java
