方法引用:實際上是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...