方法引用的分類
方法引用分為4類,常用的是前兩種。方法引用也受到訪問控制許可權的限制,可以通過在引用位置是否能夠呼叫被引用方法來判斷。具體分類資訊如下:
引用靜態方法
containingclass::staticmethodname
例子: string::valueof,對應的lambda:(s) -> string.valueof(s)
比較容易理解,和靜態方法呼叫相比,只是把.換為::
引用特定物件的例項方法
containingobject::instancemethodname
例子: x::tostring,對應的lambda:() -> this.tostring()
與引用靜態方法相比,都換為例項的而已
引用特定型別的任意物件的例項方法
containingtype::methodname
例子: string::tostring,對應的lambda:(s) -> s.tostring()
太難以理解了。難以理解的東西,也難以維護。建議還是不要用該種方法引用。
例項方法要通過物件來呼叫,方法引用對應lambda,lambda的第乙個引數會成為呼叫例項方法的物件。
引用建構函式
classname::new
例子: string::new,對應的lambda:() -> new string()
建構函式本質上是靜態方法,只是方法名字比較特殊。
Java 方法引用(JDK1 8)
引用 物件引用,物件引用的本質在於為乙個物件起別名,即 不同的棧記憶體可以同時指向同一塊堆記憶體空間。與物件引用類似的情況是,方法引用,即 為方法設定別名。在jdk 1.8之中針對於方法引用提供有如下的四種形式 引用靜態方法 類名稱 static方法名稱 引用某個物件的方法 例項化物件 普通方法 引...
JDK1 8新特性 方法引用
方法引用是對lamdba的一種優化,因此,能用方法引用的地方,一定能用lamdba表示式。使用lamdba表示式,方法的引數必須是函式式介面,所以使用方法引用也要有乙個函式式介面。前提 物件已經存在,方法已經存在,就能使用了 前提 物件是已經存在的,成員方法也是已經存在的 定義乙個函式式介面 fun...
jdk1 8新特性之方法引用
一.方法引用 若lambda 體中的內容有方法已經實現了,我們可以使用方法引用 可以理解為方法引用是lambda 表示式的另外一種表現形式 主要有三種語法格式 物件 例項方法名 類 靜態方法名 類 例項方法名 注意 1.lambda體中呼叫方法的引數列表與返回值型別,要與函式式介面中抽象方法的函式列...