使用lambda必然需要乙個函式式介面:
package com.learn.demo02.lambda;
@functionalinte***ce
public inte***ce messagebuilder
然後對log 方法進行改造:
package com.learn.demo02.lambda;
/* 使用lambda優化日誌案例
lambda的特點:延遲載入
lambda的使用前提,必須存在函式式介面
*/public class demo02lambda
}public static void main(string args) );*/
/*使用lambda表示式作為引數傳遞,僅僅是把引數傳遞到showlog方法中
只有滿足條件,日誌的等級是1級
才會呼叫介面messagebuilder中的方法buildermessage
才會進行字串的拼接
如果條件不滿足,日誌的等級不是1級
那麼messagebuilder介面中的方法buildermessage也不會執行
所以拼接字串的**也不會執行
所以不會存在效能的浪費
*/showlog(1,()->);
}}
從結果中可以看出,在不符合級別要求的情況下,lambda將不會執行。從而達到節省效能的效果。
擴充套件:實際上使用內部類也可以達到同樣的效果,只是將**操作延遲到了另外乙個物件當中通過呼叫方法來完成。而是否呼叫其所在方法是在條件判斷之後才執行的。
效能浪費案例及使用Lambda優化
1.發現以下 存在的一些效能浪費的問題 package com.functionalinte ce.lambda 日誌案例 發現以下 存在的一些效能浪費的問題 呼叫showlog方法,傳遞的第二個引數是乙個拼接後的字串 先把字串拼接好,然後再呼叫showlog方法 showlog方法中如果傳遞的日誌...
Lambda優化程式
介面中有且僅有乙個抽象方法的介面叫做函式式介面 必須針對函式式介面使用 lambda具有延時性 我們的程式在執行時,有時會執行一些沒有必要的步驟,這些步驟增加了程式執行時間,降低了程式的執行效率。而lambda具有延時性,我們可以通過這種方法對程式進行優化 沒有被lambda優化的程式 public...
90 (案例)Lambda案例演示一
從匿名內部類到最簡化的lambda表示式逐漸演示 public inte ce demo02cookpublic class demo02 lambda方式 引數列表 一些重寫方法的 makecook lambda方式 繼續簡化 3 一些 如果 中的 只有一行,無論是否有返回值,都可以省略 retu...