3分钟学会函数式接口的使用
一. 函数式接口简介
什么是函数式接口?
在接口中,有且只有一个抽象方法,那么这个接口就是函数式接口。函数式接口是Lambda表达式使用的前提条件。
为什么要使用函数式接口?
在Java中不支持将函数作为一个数据,也就不能将函数作为方法的参数进行传递。因此给函数外加一层接口的声明,相当于为其穿上一件漂亮的外衣包装起来,如果需要将函数作为方法传递时,就可以传递函数所在接口的实现类对象,来间接的传递方法内容了。
函数式接口定义
使用@FunctionalInterface注解来检查一个接口是否是一个函数式接口。放在接口定义的上方,如果接口是函数式接口,编译通过;如果不是,则编译失败。
二. 函数式接口案例
接下来我们就通过一些代码案例,来带大家学习函数式接口的使用。
2.1 定义函数式接口
这里我们先定义一个带有一个方法的接口。
2.2 使用函数式接口
三. 常用函数式接口
Java8中提供了一些常用的函数式接口,在使用类似功能的时候,不需要额外定义接口,直接使用jdk8中提供的即可。
消费型接口
内部包含一个void accept(T t)方法,是一个有参无返回值的方法。其消费数据的数据类型由泛型决定。我们可以定义一个方法,体现不同客户对X元现金的不同消费情况进行描述,即将消费金额和消费方式都以方法参数的形式进行传递。具体需求如下:
1). 客户1: 花了X元, 买了一盒化妆品;
2). 客户2 : 花了X元, 吃了一顿美食。
供给型接口
内部包含一个T get()方法,是一个无参有返回值的方法。根据用户指定的接口泛型类型,生产泛型类型的数据提供给我们。
我们再来定义一个方法,能给客户返回一个ArrayList类型的集合,集合中返回几个数据,以及数据有什么规律都由客户决定。具体需求如下:
1). 客户1 : 要5个1-10之间的随机数整数;
2). 客户2 : 要8个1-100之间的偶数。
函数型接口
内部包含一个R apply(T t)方法,是一个有参有返回值的方法。通常用于对参数进行处理,转换(处理逻辑由Lambda表达式实现),然后返回一个新的值。这里我们也可以定义一个方法,给定一个整数x,根据Lambda表达式的实现转换成对应的y,具体需求如下:
1). 客户1 : y为x的2倍;
2). 客户3 : y为x的平方。
断言型接口
内部包含一个boolean test(T t)方法,对给定的参数进行判断(判断逻辑由Lambda表达式实现),如果符合要求返回true,不符合则返回false。
这里也定义一个方法,需要用户提供一个容器ArrayList,根据用户的需求,将容器中符合条件的数据筛选出来,将筛选出的数据放置在新容器中返回给用户。具体需求如下:
1). 客户1: 要求返回集合中能被2整除的所有数;
2). 客户2: 要求返回不大于100所有的数据。
现在你学会函数式接口了吗?如果你还有什么疑问,在评论区留言吧。
相关推荐HOT
更多>>如何添加Java环境变量?
要添加Java环境变量,可以按照以下步骤:并安装Java开发工具包(JDK)、找到Java安装路径、设置JAVA_HOME环境变量、添加Java可执行文件路径到PATH...详情>>
2023-05-04 11:00:56从零开始学Java之String字符串的编码
对很多小白来说,可能不明白什么是字符编码,也不知道为什么要有字符编码,所以先来给大家简要地介绍一下字符编码。详情>>
2023-05-04 10:21:02新手速来!几步带你掌握MyBatis Plus
Mybatis-Plus(简称MP)是一款Mybatis的增强工具,它是在Mybatis的基础上实现的简化开发工具。Mybatis-Plus给我们提供了开箱即用的CRUD操作、自动...详情>>
2023-04-28 10:57:09学习java需要什么基础?基础知识有哪些?
网络编程:了解基本的网络编程概念和协议,熟悉 Java 网络编程 API。建议在学习 Java 之前,先学习一些基础的编程语言,如 C 或 Python 等,这...详情>>
2023-04-28 10:41:14