使用Lambda解决性能浪费问题。

    科技2024-04-22  93

    使用Lambda优化日志案例,解决性能浪费

    **

    这里我们简单的举一个日志案例来说明lambda这一功能

    首先我们创建一个未优化的日志案例** public class Demo01 { public static void showLog(int level,String message){ //对日志等级进行判断,为1则输出message if(level==1){ System.out.println(message); } } public static void main(String[] args) { String ms0="hellow"; String ms1=" are you"; String ms2=" ok"; showLog(1,ms0+ms1+ms2); } }

    显然,我们可以看出这段代码存在着性能浪费问题:即无论showLog方法中if是否判定成功,传递的message参数总是先拼接好的,存在浪费。

    - 然后我们对日志案例进行优化:

    首先创建一个函数式接口(使用lambda的必须条件):

    @FunctionalInterface//此注解能确保接口是函数式接口 public interface Messagebulider { public abstract String buildmessage(); }

    然后使用lambda配合函数式接口进行优化:

    /* 使用lambda优化案例: lambda的特点:延迟加载 使用lambda的条件:必须存在函数式接口 */ public class Demo02 { //创建showLog方法,参数传递Messagebuilder接口 public static void showLog(int level,Messagebulider ms){ if(level==1){ System.out.println(ms.buildmessage()); } } public static void main(String[] args) { String ms0="hellow"; String ms1=" are you"; String ms2=" ok"; showLog(1,()->{ return (ms0+ms1+ms2); }); } }

    这样,只有日志等级满足1时,才会调用Messagebuilder中的方法来进行字符串的拼接,解决了性能浪费问题。

    Processed: 0.010, SQL: 8