您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Java中Lambda表達式如何使用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
一 點睛
Lambda表達式支持將代碼塊作為方法參數,Lambda表達式允許使用更簡潔的代碼來創建只有一個抽象方法的接口(函數式接口)的實例。
Lambda表達式主要作用就是代替匿名內部類的繁瑣語法。
它由三部分組成:
形參列表。形參列表允許省略形參類型。如果形參列表中只有一個參數,甚至連形參列表的圓括號也可以省略。 箭頭(->),必須通過英文等號和大于符號組成。 代碼塊。如果代碼塊只有包含一條語句,Lambda表達式允許省略代碼塊的花括號,如果省略了代碼塊的花括號,這條語句不要用花括號表示語句結束。Lambda代碼塊只有一條return語句,甚至可以省略return關鍵字。Lambda表達式需要返回值,而它的代碼塊中僅有一條省略了return的語句,Lambda表達式會自動返回這條語句的值。
二 用匿名內部類實現命令模式
1 代碼
Command接口
public interface Command{ // 接口里定義的process()方法用于封裝“處理行為” void process(int[] target);}
ProcessArray類
public class ProcessArray { public ProcessArray() { } public void process(int[] target, Command cmd) { cmd.process(target); }}
CommandTest類
public class CommandTest { public CommandTest() { } public static void main(String[] args) { ProcessArray pa = new ProcessArray(); int[] array = new int[]{3, -4, 6, 4}; pa.process(array, new Command() { public void process(int[] target) { int sum = 0; int[] var3 = target; int var4 = target.length; for(int var5 = 0; var5 < var4; ++var5) { int tmp = var3[var5]; sum += tmp; } System.out.println("數組元素的總和是:" + sum); } }); }}
2 運行
數組元素的總和是:9
三 用Lambda表達式實現命令模式
1 代碼
public class CommandTest2{ public static void main(String[] args) { ProcessArray pa = new ProcessArray(); int[] array = {3, -4, 6, 4}; // 處理數組,具體處理行為取決于匿名內部類 pa.process(array , (int[] target)->{ int sum = 0; for (int tmp : target ) { sum += tmp; } System.out.println("數組元素的總和是:" + sum); }); }}
2 運行
數組元素的總和是:9
四 比較
Lambda表達式與匿名內部類比較,不需要new XXX(){}這種繁瑣的代碼,不需要指出重寫方法名字,不需要給出重寫方法的返回值類型,只要給出重寫的方法括號以及括號里的形參列表即可。
Lambda表達式的代碼塊會代替實現方法的方法體,Lambda表達式就相對于一個匿名方法。
五 Lambda表達式的簡化寫法
1 代碼
interface Eatable{ void taste();}interface Flyable{ void fly(String weather);}interface Addable{ int add(int a , int b);}public class LambdaQs{ // 調用該方法需要Eatable對象 public void eat(Eatable e) { System.out.println(e); e.taste(); } // 調用該方法需要Flyable對象 public void drive(Flyable f) { System.out.println("我正在駕駛:" + f); f.fly("【碧空如洗的晴日】"); } // 調用該方法需要Addable對象 public void test(Addable add) { System.out.println("5與3的和為:" + add.add(5, 3)); } public static void main(String[] args) { LambdaQs lq = new LambdaQs(); // Lambda表達式的代碼塊只有一條語句,可以省略花括號。 lq.eat(()-> System.out.println("蘋果的味道不錯!")); // Lambda表達式的形參列表只有一個形參,省略圓括號 lq.drive(weather -> { System.out.println("今天天氣是:" + weather); System.out.println("直升機飛行平穩"); }); // Lambda表達式的代碼塊只有一條語句,省略花括號 // 代碼塊中只有一條語句,即使該表達式需要返回值,也可以省略return關鍵字。 lq.test((a , b)->a + b); }}
2 運行
LambdaQs$$Lambda$1/1078694789@3d075dc0蘋果的味道不錯!我正在駕駛:LambdaQs$$Lambda$2/1149319664@7cca494b今天天氣是:【碧空如洗的晴日】直升機飛行平穩5與3的和為:8
關于Java中Lambda表達式如何使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。