案例1:函数式接口作为参数
1. 1 原日志代码
public class Demo01Logger {
//只有日志等级为1时,才会打印日志信息
public static void showLog(int level, String massage){
if(level==1){
System.out.println(massage);
}
}
public static void main(String[] args) {
//定义三个日志信息
String msg1 = "hello";
String msg2 = "world";
String msg3 = "java";
showLog(1,msg1+msg2+msg3);
}
}
如代码所示,只有当level为1时,日志信息才会打印,但是当level为其他等级的时候,尽管不需要打印,但是日志信息已经完成拼接,此时会造成系统性能的浪费。
1.2 优化的代码
(1)函数式接口
/**
* 函数式接口:有且只有一个抽象方法的接口,称之为函数式接口
* 接口中可以包含其他方法,如:默认方法、静态方法、私有方法
*/
@FunctionalInterface //可以检测接口是否是一个函数式接口,不满足条件时编译失败
public interface messageBuilder {
public abstract String builderMessage();
}
(2)