本篇文章給大家分享的是有關(guān)Lambda表達(dá)式如何在Java項(xiàng)目中使用,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比新密網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式新密網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋新密地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴。
一 點(diǎn)睛
Lambda表達(dá)式支持將代碼塊作為方法參數(shù),Lambda表達(dá)式允許使用更簡潔的代碼來創(chuàng)建只有一個(gè)抽象方法的接口(函數(shù)式接口)的實(shí)例。
Lambda表達(dá)式主要作用就是代替匿名內(nèi)部類的繁瑣語法。
它由三部分組成:
形參列表。形參列表允許省略形參類型。如果形參列表中只有一個(gè)參數(shù),甚至連形參列表的圓括號也可以省略。
箭頭(->),必須通過英文等號和大于符號組成。
代碼塊。如果代碼塊只有包含一條語句,Lambda表達(dá)式允許省略代碼塊的花括號,如果省略了代碼塊的花括號,這條語句不要用花括號表示語句結(jié)束。Lambda代碼塊只有一條return語句,甚至可以省略return關(guān)鍵字。Lambda表達(dá)式需要返回值,而它的代碼塊中僅有一條省略了return的語句,Lambda表達(dá)式會(huì)自動(dòng)返回這條語句的值。
二 用匿名內(nèi)部類實(shí)現(xiàn)命令模式
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("數(shù)組元素的總和是:" + sum); } }); } }
2 運(yùn)行
數(shù)組元素的總和是:9
三 用Lambda表達(dá)式實(shí)現(xiàn)命令模式
1 代碼
public class CommandTest2 { public static void main(String[] args) { ProcessArray pa = new ProcessArray(); int[] array = {3, -4, 6, 4}; // 處理數(shù)組,具體處理行為取決于匿名內(nèi)部類 pa.process(array , (int[] target)->{ int sum = 0; for (int tmp : target ) { sum += tmp; } System.out.println("數(shù)組元素的總和是:" + sum); }); } }
2 運(yùn)行
數(shù)組元素的總和是:9
四 比較
Lambda表達(dá)式與匿名內(nèi)部類比較,不需要new XXX(){}這種繁瑣的代碼,不需要指出重寫方法名字,不需要給出重寫方法的返回值類型,只要給出重寫的方法括號以及括號里的形參列表即可。
Lambda表達(dá)式的代碼塊會(huì)代替實(shí)現(xiàn)方法的方法體,Lambda表達(dá)式就相對于一個(gè)匿名方法。
五 Lambda表達(dá)式的簡化寫法
1 代碼
interface Eatable { void taste(); } interface Flyable { void fly(String weather); } interface Addable { int add(int a , int b); } public class LambdaQs { // 調(diào)用該方法需要Eatable對象 public void eat(Eatable e) { System.out.println(e); e.taste(); } // 調(diào)用該方法需要Flyable對象 public void drive(Flyable f) { System.out.println("我正在駕駛:" + f); f.fly("【碧空如洗的晴日】"); } // 調(diào)用該方法需要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表達(dá)式的代碼塊只有一條語句,可以省略花括號。 lq.eat(()-> System.out.println("蘋果的味道不錯(cuò)!")); // Lambda表達(dá)式的形參列表只有一個(gè)形參,省略圓括號 lq.drive(weather -> { System.out.println("今天天氣是:" + weather); System.out.println("直升機(jī)飛行平穩(wěn)"); }); // Lambda表達(dá)式的代碼塊只有一條語句,省略花括號 // 代碼塊中只有一條語句,即使該表達(dá)式需要返回值,也可以省略return關(guān)鍵字。 lq.test((a , b)->a + b); } }
2 運(yùn)行
LambdaQs$$Lambda$1/1078694789@3d075dc0
蘋果的味道不錯(cuò)!
我正在駕駛:LambdaQs$$Lambda$2/1149319664@7cca494b
今天天氣是:【碧空如洗的晴日】
直升機(jī)飛行平穩(wěn)
5與3的和為:8
以上就是Lambda表達(dá)式如何在Java項(xiàng)目中使用,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。