jdk8 之方法引用

2021-08-31 21:07:02 字數 1845 閱讀 2186

方法引用:實際上是lamda函式的語法糖

有時候並不適用

我們可以講方法引用看做乙個函式指標.function pointer

方法引用分為4類:

類名::靜態方法名

建立乙個類

public class student 

public void setname(string name)

public int getscore()

public void setscore(int score)

public student(string name, int score)

public student()

public static int comparestudentbyscore(student s1,student s2)

/*** 根據ascii 碼進行比較

* @param s1

* @param s2

* @return

*/public static int comparestudentbyname(student s1,student s2)

}

public static void main(string args)
輸出:

10

5060

90

引用名(物件名)::方法名

.

public class studentcompare 

/*** 根據ascii 碼進行比較

* @param s1

* @param s2

* @return

*/public int comparestudentbyname(student s1,student s2) }

studentcompare sc = new studentcompare();

list.sort(sc::comparestudentbyname);

list.foreach(it -> system.out.println(it.getname()));

輸出

lisi

wangwu

zhangsan

zhaoliu

public int comparebyname(student stu) 

list.sort(student::comparebyname);

list.foreach(it -> system.out.println(it.getname()));

lisi

wangwu

zhangsan

zhaoliu

compare 有倆個引數這裡只有乙個引數.是呼叫者本身做一為第乙個引數傳入進去

例如:

listlist1 = arrays.aslist("beijing","shanxi","hangzhou","ahui");

collections.sort(list1,string::comparetoignorecase);

list1.foreach(system.out::println);

這裡 comparetoignorecase 原始碼不傳入任何引數.就是呼叫本身做比較

4. ### 構造方法::new

public string getstring1(string string,functionfunc) 

system.out.println(m.getstring1("hello", string::new));

JDK8新特性之方法引用

方法引用是只需要使用方法的名字,而具體呼叫交給函式式介面,需要和lambda表示式配合使用。如 listlist arrays.aslist a b c list.foreach str system.out.print str list.foreach system.out print 上面兩種寫...

JDK8新特性之方法引用

方法引用是只需要使用方法的名字,而具體呼叫交給函式式介面,需要和lambda表示式配合使用。如 list list arrays.aslist a b c list.foreach str system.out.print str list.foreach system.out print 上面兩種...

jdk8 方法引用

方法引用的形式 方法引用的標準形式是 類名 方法名。注意 只需要寫方法名,不需要寫括號 有以下四種形式的方法引用 型別 示例 引用靜態方法 containingclass staticmethodname 引用某個物件的例項方法 containingobject instancemethodname...