Day28——函数式接口

1. 函数式接口

1.1 概述

	如果说一个接口内有且只有一个方法,而且该方法是一个缺省属性为public abstract方法,该接口可以称之为是一个函数式接口。
	自定义函数式接口,还有系统中提供的函数式接口
	Comparator<T> Runnable
	
	可以直接理解JDK1.8的新特征,Lambda表达式来使用。
	
	Lambda表达式对比匿名内部类使用
		1. 简化了代码结构
		2. 节约了内存资源
		3. 让程序员更加关注,我要做什么,而不是为了做什么需要完成什么

1.2 @FunctionalInterface 使用

类似于
	@Override
	开启代码重写格式严格检查

1.3 使用自定义的函数式接口作为方法的参数使用

代码中使用函数式接口
	1. 让程序的目的性更强
	2. 提供复用,普适性的价值
	3. 节约资源

2. 函数式编程思想

2.1 Lambda延迟执行

2.1.1 日志记录
日志是否保存会存在等级限制
	演示一个根据不同的等级来记录log日志
要求:	
	等级 == 1 记录log日志,其他情况不记录
2.1.2 使用函数式接口提供日志信息功能
@FunctionalInterface
public interface LogMessage {
    /**
     * 函数式接口中方法内容,该方法的返回值是String类型
     *
     * @return String类型返回值
     */
    String returnLogMessage();
}

3. Java中提供的常用函数式接口

3.1 JDK常用函数式接口概述

java.util.function包名 。提供了很多函数式接口
	规范了一些操作,提升了开发效率,更加专注于目的性!!!
	
	Supplier<T> 生产者, 返回一个指定类型的数据
	Consumer<T> 消费者, 消耗一个指定类型的数据
	Predicate<T> 判断调节,过滤使用
	Function<T,R> 类型转换,根据你指定的类型T, 转换成对应类型R

3.2 Supplier 生产者,返回一个指定的数据类型

java.util.function.Supplier<T>
	有且只有一个方法
		T get();
		不需要参数,返回指定T类型数据
		什么都不吃,挤的都是输出。。。

3.3 Consumer消费者,处理数据

Consumer<T>
	操作使用的方式是
	void accept(T t);
		根据接口指定的数据类型接收对应数据,进行处理和消费,对外没有任何的返回
		至于处理的过程,展示,处理,计算

3.4 Predicate 判断数据是否合适,返回true/false

Predicate<T>一般用于调节判断,过滤数据的方法
	函数式接口中指定的方法
	boolean test(T t);
		处理T类型数据,返回boolean true / false
发布了18 篇原创文章 · 获赞 44 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41424681/article/details/104800970