函数式接口的学习函数式接口的学习
函数式接口函数式接口
如果说一个接口内有且只有一个方法,而且该方法是一个缺省属
性为public abstract方法,该接口可以称之为是一个函数式接口。
Comparator Runnable
@FunctionalInterface 使用,检查函数式接口格式问题。
要求当前接口中有且只有一个缺省属性为public abstract 的方法。
代码中使用函数式接口
1. 让程序的目的性更强。
2. 提供复用,普适性的价值。
3. 节约资源。
函数式编程思想函数式编程思想
Lambda延迟执行延迟执行
日志记录是否保存存在等级限制
package com.qfedu.b_lambda;
/**
* 日志等级记录操作
*
* @author Anonymous 2020/3/11 19:11
*/
public class Demo1 {
public static void main(String[] args) {
/*
这里存问题:
MIDDLE,LOWER是没有必要进行字符串累加,存在资源浪费问题。
字符串的累加过程,需要经过Level判断之后才可以执行,避免没有必要的性能浪费。
这里就可以使用Lambda表达式执行的延迟性,在没有满足level情况下,不去做字符串累加
过程。这里需要函数式接口
*/
log(Level.MIDDLE, "异常位置XXX," + "异常问题XXX," + "异常时间XXX");
}
/**
* 判断等级,是否需要记录当前日志信息
*
* @param level 枚举类型
* @param logMsg 需要记录的日志信息
*/
public static void log(Level level, String logMsg) {
// 判断是否满Level.HIGH要求
if (Level.HIGH == level) {
System.err.println(logMsg);
}
}
}
使用函数式接口提供日志信息功能使用函数式接口提供日志信息功能
这里需要函数式接口,返回值类型是String类型
package com.qfedu.b_lambda;
/**
* 返回值为String类型方法的函数式接口
*