调用showLog方法,参数MessageBuilder是一个函数式接口,可以传递lambda表达式
使用lambda表达式作为参数传递,仅仅是把参数传递到showLog()方法中,只有满足条件,等级是1,才会调用接口MessageBuilder中的方法buildMessage,才会进行字符串的拼接
反之条件不满足,等级不是1,接口中的方法不会执行,不存在性能的浪费
<1>定义一个接口用来拼接日志信息
package Demo36; @FunctionalInterface public interface MessageBuilder { public abstract String buildMessage(); }
<2>
package Demo36; public class Demo02Lambda { public static void showLog(int level,MessageBuilder mb){ if(level == 1){ System.out.println(mb.buildMessage()); } } public static void main(String[] args) { String msg1 = "Hello"; String msg2 = "World"; String msg3 = "Java"; //如果等级不满足,则不执行lambda表达式 showLog(2,() -> { System.out.println("会不会执行"); return msg1+msg2+msg3; }); } }