Java8之方法引用

2021-08-16 20:35:05 字數 2270 閱讀 3513

方法引用的形式

方法引用的標準形式是:類名::方法名。(注意:只需要寫方法名,不需要寫括號)

有以下四種形式的方法引用:

型別示例

引用靜態方法

containingclass::staticmethodname

引用某個物件的例項方法

containingobject::instancemethodname

引用某個型別的任意物件的例項方法

containingtype::methodname

引用構造方法

classname::new

下面我們通過乙個小demo來分別學習這幾種形式的方法引用:

public class person 

string name;

localdate birthday;

*** gender;

string emailaddress;

public string getemailaddress()

public *** getgender()

public localdate getbirthday()

public string getname()

public static int comparebyage(person a,person b)

}

引用靜態方法

person  persons = new person[10];

//使用匿名類

arrays.sort(persons, new comparator()

});//使用lambda表示式

arrays.sort(persons, (o1, o2) -> o1.birthday.compareto(o2.birthday));

//使用lambda表示式和類的靜態方法

arrays.sort(persons, (o1, o2) -> person.comparebyage(o1,o2));

//使用方法引用

//引用的是類的靜態方法

arrays.sort(persons, person::comparebyage);

引用物件的例項方法

class comparisonprovider

public int comparebyage(person a,person b)

}comparisonprovider provider = new comparisonprovider();

//使用lambda表示式

//物件的例項方法

arrays.sort(persons,(a,b)->provider.comparebyage(a,b));

//使用方法引用

//引用的是物件的例項方法

arrays.sort(persons, provider::comparebyage);

引用型別物件的例項方法

string stringsarray = ;

//使用lambda表示式和型別物件的例項方法

arrays.sort(stringsarray,(s1,s2)->s1.comparetoignorecase(s2));

//使用方法引用

//引用的是型別物件的例項方法

arrays.sort(stringsarray, string::comparetoignorecase);

引用構造方法

public static , dest extends collection>

dest transferelements(source sourcecolletions, suppliercolltionfactory)

return result;

}...

final listpersonlist = arrays.aslist(persons);

//使用lambda表示式

setpersonset = transferelements(personlist,()-> new hashset<>());

//使用方法引用

//引用的是構造方法

setpersonset2 = transferelements(personlist, hashset::new);

java8 靜態方法引用

靜態方法引用 如果函式式介面的實現恰好可以通過呼叫乙個靜態方法完成 就可以使用靜態方法引用 只是呼叫 不做其他處理 classname exmaple1 function todo add function.date 2017年9月8日 下午10 39 06 author lelonta versi...

java 8 方法引用

如果lambda 表示式的 塊只有一行 程式就可以省略表示式 塊的花括號,不僅如此,如果只有一行 還可以使用方法的引用和構造器的引用 下面為四種引用的例項 public class function functionalinte ce inte ce mytest3 functionalinte c...

java8方法引用

方法引用為lambda的另外一種表現形式,其為 若lambda體的內容中已有方法實現了,我們可以對其使用 方法有引用 其有三種形式 1 物件 例項 方法名 2 類 靜態方法名 3 類例項方法名 第一種形式 例項 方法名 test public void test1 第二種形式,類 靜態方法 test...