**
显然,我们可以看出这段代码存在着性能浪费问题:即无论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中的方法来进行字符串的拼接,解决了性能浪费问题。