java方法引用能用于lambda嗎

小樊
81
2024-11-19 22:49:58

Java方法引用可以用于Lambda表達(dá)式。方法引用是Lambda表達(dá)式的一種簡(jiǎn)化寫(xiě)法,它允許你直接引用已經(jīng)存在的方法或構(gòu)造函數(shù)。方法引用可以分為四種類(lèi)型:

  1. 靜態(tài)方法引用:使用類(lèi)名::靜態(tài)方法名的形式表示。例如,List::sort 是一個(gè)靜態(tài)方法引用,它引用了 List 類(lèi)中的 sort 方法。

  2. 實(shí)例方法引用:使用實(shí)例對(duì)象::實(shí)例方法名的形式表示。例如,String::substring 是一個(gè)實(shí)例方法引用,它引用了 String 類(lèi)中的 substring 方法。

  3. 任意對(duì)象的實(shí)例方法引用:使用類(lèi)名::實(shí)例方法名的形式表示。例如,Object::toString 是一個(gè)任意對(duì)象的實(shí)例方法引用,它引用了 Object 類(lèi)中的 toString 方法。

  4. 構(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)潔易讀。

0