Java8 方法引用
生活随笔
收集整理的這篇文章主要介紹了
Java8 方法引用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
概述
方法引用是用來直接訪問類或實例陰莖存在的方法或者構造方法.它需要由兼容的函數式接口(lambda表達式中用到的接口)構成的目標類型上下文. 有時候, 當我們想要實現一個函數式接口的方法, 但是已經由類實現了我們想要的功能, 這時可以使用方法引用來直接使用現有的功能實現.
關于lambda表達式可以看上一篇文章
當lambda表達式只是執行一個方法調用時, 直接通過方法引用的形式調用. 方法引用是一種更簡潔的lambda表達式.
方法引用是lambda表達式的簡寫, 提高了代碼可讀性. 可以看出來, 方法引用就是用已經實現的方法來實現lambda表達式中的實現, 所以引用的方法要滿足以下要求:
使用
因為方法引用是簡寫的lambda表達式, 所以類比即可.
方法引用的語法為:
類或對象名::方法名或new通過引用即可引用指定類或對象的指定方法
分類
下面介紹以下幾種不同的方法引用.
1.靜態方法引用
顧名思義, 靜態方法引用就是引用類的靜態方法, 語法為:
類名::靜態方法名方法引用與lambda表達式:
String::valueOf 等價于 s -> String.valueOf(s); Math::pow 等價于 (x,y) -> Math.pow(x,y);?
2.實例方法引用
顧名思義,實例方法引用就是引用對象實例的方法, 語法為:
對象實例::方法名方法引用與lambda表達式:
String str = "aaaaaaaaaaa"; // 若實例方法要通過對象來調用, 第一個參數會成為調用實例方法的對象, 后面的參數為調用方法的參數 String::length 等價于lambda表達式 s -> s.length(); String::equals 等價于lambda表達式 (s1,s2) -> s1.equals(s2); // 若實例方法為this或super, 參數會成為調用方法的參數 this::equals 等價于lambda表達式 s -> this.equals(s); super::equals 等價于lambda表達式 s -> super.equals(s);?
3.構造方法引用
顧名思義, 構造方法引用就是引用類的構造方法, 語法為:
類名::new方法引用與lambda表達式:
// 會根據參數尋找合適的構造方法 String::new 等價于lambda表達式 s->new String(s);也等價于 ()->new String(); // 同時也可以創建數組 int[]::new 等價于lambda表達式 x->new int[x];?
關于方法引用的更多可以自己進行嘗試
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Java8 方法引用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hadoop重启后 9000端口不在
- 下一篇: python widnows mysql