使用Lambda表达式优化日志案例
package com.chunzhi.Test02Lambda; /* 日志案例 使用Lambda优化日志案例 Lambda的特点:延迟加载 Lambda的使用前提,必须存在函数式接口 使用Lambda表达式作为参数传递,仅仅是把参数传递到methodLog方法中 只有满足条件:这里的条件是日志等级为1级 才会调用接口MessageBuilder中的方法builderMessage 才会进行字符串的拼接 如果条件不满足:日志的等级不是1级 那么MessageBuilder接口的方法builderMessage也不会执行 所以拼接字符串的代码也不会执行 所以就不会存在性能的浪费 */ public class Test02LambdaLogger { // 定义一个显示日志的方法,方法的参数传递日志的等级和MessageBuilder接口 public static void methodLog(int level, MessageBuilder mb) { // 对日志的等级进行判断,如果是1级,则调用MessageBuilder接口中的builderMessage方法 if (level == 1) { System.out.println(mb.builderMessage()); } } public static void main(String[] args) { // 定义三个日志信息 String msg01 = "Java"; String msg02 = "执行"; String msg03 = "出错"; // 调用methodLog方法,参数MessageBuilder是一个函数式接口,所以可以传递Lambda表达式 methodLog(2,() -> { // 返回一个拼接好的字符串 return msg01 + msg02 + msg03; }); } }
函数式接口:
package com.chunzhi.Test02Lambda; /* 函数式接口:有且只有一个抽象方法的接口,称之为函数式接口 当然接口中可以含有其它的方法(默认,静态,私有) */ @FunctionalInterface public interface MessageBuilder{ public abstract String builderMessage(); }