日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Lambda优化日志案例

發(fā)布時間:2024/4/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Lambda优化日志案例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

體驗Lambda的更優(yōu)寫法

使用Lambda必然需要一個函數(shù)式接口:

package com.learn.demo02.Lambda;@FunctionalInterface public interface MessageBuilder {//定義一個拼接消息的抽象方法,返回被拼接的消息public abstract String builderMessage(); }

然后對log 方法進行改造:

package com.learn.demo02.Lambda; /*使用Lambda優(yōu)化日志案例Lambda的特點:延遲加載Lambda的使用前提,必須存在函數(shù)式接口*/ public class Demo02Lambda {//定義一個顯示日志的方法,方法的參數(shù)傳遞日志的等級和MessageBuilder接口public static void showLog(int level, MessageBuilder mb){//對日志的等級進行判斷,如果是1級,則調(diào)用MessageBuilder接口中的builderMessage方法if(level==1){System.out.println(mb.builderMessage());}}public static void main(String[] args) {//定義三個日志信息String msg1 = "Hello";String msg2 = "World";String msg3 = "Java";//調(diào)用showLog方法,參數(shù)MessageBuilder是一個函數(shù)式接口,所以可以傳遞Lambda表達式/*showLog(2,()->{//返回一個拼接好的字符串return msg1+msg2+msg3;});*//*使用Lambda表達式作為參數(shù)傳遞,僅僅是把參數(shù)傳遞到showLog方法中只有滿足條件,日志的等級是1級才會調(diào)用接口MessageBuilder中的方法builderMessage才會進行字符串的拼接如果條件不滿足,日志的等級不是1級那么MessageBuilder接口中的方法builderMessage也不會執(zhí)行所以拼接字符串的代碼也不會執(zhí)行所以不會存在性能的浪費*/showLog(1,()->{System.out.println("不滿足條件不執(zhí)行");//返回一個拼接好的字符串return msg1+msg2+msg3;});} }

從結(jié)果中可以看出,在不符合級別要求的情況下,Lambda將不會執(zhí)行。從而達到節(jié)省性能的效果。

擴展:實際上使用內(nèi)部類也可以達到同樣的效果,只是將代碼操作延遲到了另外一個對象當中通過調(diào)用方法來完成。而是否調(diào)用其所在方法是在條件判斷之后才執(zhí)行的。

總結(jié)

以上是生活随笔為你收集整理的使用Lambda优化日志案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。