Java方法引用可以用于Lambda表達(dá)式。方法引用是Lambda表達(dá)式的一種簡(jiǎn)化寫(xiě)法,它允許你直接引用已經(jīng)存在的方法或構(gòu)造函數(shù)。方法引用可以分為四種類(lèi)型:
靜態(tài)方法引用:使用類(lèi)名::靜態(tài)方法名的形式表示。例如,List::sort
是一個(gè)靜態(tài)方法引用,它引用了 List
類(lèi)中的 sort
方法。
實(shí)例方法引用:使用實(shí)例對(duì)象::實(shí)例方法名的形式表示。例如,String::substring
是一個(gè)實(shí)例方法引用,它引用了 String
類(lèi)中的 substring
方法。
任意對(duì)象的實(shí)例方法引用:使用類(lèi)名::實(shí)例方法名的形式表示。例如,Object::toString
是一個(gè)任意對(duì)象的實(shí)例方法引用,它引用了 Object
類(lèi)中的 toString
方法。
構(gòu)造方法引用:使用類(lèi)名::new的形式表示。例如,ArrayList::new
是一個(gè)構(gòu)造方法引用,它引用了 ArrayList
類(lèi)的構(gòu)造方法。
在Lambda表達(dá)式中,你可以使用方法引用來(lái)替換匿名內(nèi)部類(lèi)。例如,假設(shè)你有一個(gè)接口 Comparator<T>
,你可以使用方法引用來(lái)簡(jiǎn)化Lambda表達(dá)式的編寫(xiě):
// 使用Lambda表達(dá)式
Collections.sort(list, (a, b) -> Integer.compare(a.length(), b.length()));
// 使用方法引用
Collections.sort(list, Comparator.comparingInt(String::length));
在這個(gè)例子中,我們使用了Lambda表達(dá)式和方法引用來(lái)實(shí)現(xiàn)相同的功能。方法引用使得代碼更簡(jiǎn)潔易讀。