函数式接口的介绍和使用(FunctionInterface)——Consumer,Supplier,Predicate、Function

news2024/12/23 18:49:05

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

函数式接口可以被隐式转换为 lambda 表达式。

函数式接口都添加了 @FunctionalInterface 注解,这个是jdk1.8才引进的。例如
在这里插入图片描述

因为函数式接口里面只是提供了一个抽象的方法,所以在使用时,一般都会使用 lambda 表达式,这个也是jdk1.8才引进的

在JDK中,常见的函数式接口分为四类,分别是

  • 消费型函数式接口 Consumer 常用于遍历 void accpet(T t)
  • 供给型函数式接口 Supplier 用于产生数据 == T get() ==
  • 断言型函数式接口 Predicate 用于判断 == boolean test(T t) ==
  • 函数型函数式接口 Function<T,R> 用于逻辑处理 == R apply(T t) ==

Consumer

在这里插入图片描述

可以看出 Consumer函数式接口提供的抽象方法为 void accept(T t),有参数,没有返回值。具体的使用方法如下:

     public static void main(String[] args) {
         Consumer consumer = new Consumer<Object>() {
             @Override
             public void accept(Object o) {
                 System.out.println("o = " + o);
             }
         };
 ​
         consumer.accept("我是消费式函数接口");
     }//运行结果
 o = 我是消费式函数接口

可以看出,传入了参数,没有返回值,故称为消费型

Supplier:无中生有

在这里插入图片描述

具体的使用方法如下:

    public static void main(String[] args) {
         Supplier<String> supplier = new Supplier<String>() {
             @Override
             public String get() {
                 return "我是一个私生子";
             }
         };
         String s = supplier.get();
         System.out.println("s = " + s);
     }//运行结果
 s = 我是一个私生子

可以看出,没有传递任何参数,但是有返回值,无中生有产生了数据。

Predicate

在这里插入图片描述
Predicate里面给出的抽象方法有参数,返回值为boolean,就是对数据进行校验,具体使用方法如下:

     public static void main(String[] args) {
         Predicate<String> predicate = new Predicate<String>() {
             @Override
             public boolean test(String s) {
                 if("1".equals(s)){
                     return true;
                 }
                 return false;
             }
         };
         boolean test = predicate.test("2");
         System.out.println("test = " + test);
     }//运行结果
 test = false

Function<T,R>

在这里插入图片描述

可以看出,在抽象方法中既有参数,也有返回值,用于对代码逻辑进行处理。具体示例如下:

   public static void main(String[] args) {
         Function<String, Object> function = new Function<String, Object>() {
             @Override
             public Object apply(String s) {
                 return "传给我的参数是:" + s;
             }
         };
         Object tom = function.apply("Tom");
         System.out.println(tom);
     }//运行结果
 传给我的参数是:Tom

在上面的有参数的三种函数式接口,JDK也提供了给出两个参数的函数如:BiConsumer<T, U>,BiFunction<T, U, R> ,BiPredicate<T, U>
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】| 01——泛型编程 | 模板

系列文章目录 【C】| 01——泛型编程 | 模板 文章目录 1. 认识泛型编程2. 函数模板1.1 函数模板的语法1.1.1 定义模板1.1.2 应用模板实现函数1.1.3 使用模板函数(实例化)1.1.3.1 隐式使用(实例化)1.1.3.2 显式使用(实例化)1.1.3.3 使用函数模板的注意事项(实例化) 2. 类模板2.…

第1章 Nginx简介

基于 Nginx版本 1.14.2 &#xff0c;Tomcat版本 9.0.0 演示 第1章 Nginx简介 1.1 Nginx发展介绍 Nginx &#xff08;engine x&#xff09; 是一个高性能的Web服务器和反向代理服务器&#xff0c;也可以作为邮件代理服务器。 Nginx 特点是占有内存少&#xff0c;并发处理能力…

南京邮电大学数据库实验二(DBMS的数据库保护)

文章目录 一、实验目的和要求二、实验环境(实验设备)三、实验原理及内容(1) DBMS的数据库保护功能(2) 安全控制中的访问控制机制(3) 事务的提交与回滚(4) 并发控制的锁机制 三、实验内容1.以root账户登录数据库管理系统&#xff0c;创建用户U1和U2&#xff0c;密码自定。2.创建…

Redis 入门教程(简单全面版)

1 安装&#xff1a; 1.1 生产环境安装 注意&#xff1a; 1、如果安装过程有问题可以参考源代码中的 README.md 文件 2、如果服务器只安装一个 redis 通常选择 /usr/local/redis 作为安装目录&#xff0c;如果安装多台则建议带上 服务名称 区分&#xff08;建议带上 服务名称 区…

jvm-狂神课程

一、JVM JVM就是Java虚拟机&#xff0c;Java虚拟机就是JVM 1. JVM位置 1、Java程序&#xff08;跑的环境是在jvm&#xff08;虚拟机&#xff09;跑的&#xff0c;也可以说是在jre上跑的&#xff09;java运行是需要在特定的环境的也就是这个jre这种。 2、jvm&#xff08;也就是…

别不信:这些细节关乎你的物联网设备的命运!

《高并发系统实战派》-- 值得拥有 一、设备接入层网络协议的意义 随着物联网的发展&#xff0c;越来越多的设备需要接入云平台进行远程监控和管理。设备接入层网络协议起到了承担设备接入网络的功能&#xff0c;为物联网平台提供了数据交互的基础。设备接入层网络协议对于物联…

【C++ 入坑指南】(01)学习路线

入门 1. 推荐书籍 《Accelerated C》&#xff0c;《Essential C》二选一精读。《A Tour of C》选读。 《Accelerated C》很适合新手&#xff0c;因为只有短短不到 300 页&#xff0c;在普遍一样的入门书籍里面是一股清流。容易通读完&#xff0c;减少挫败感。就这样的篇幅&am…

【每天学习一点新知识】如何绕过CDN查真实ip

1、什么是CDN 为了防止流量过大网络堵塞&#xff0c;我们就在靠近用户的地方&#xff0c;建一个缓存服务器&#xff0c;把远端的内容复制一份&#xff0c;放在这里&#xff0c;简单来说就是将内容缓存在终端用户附近。 2、怎么绕过cdn找到远端服务器的真实ip呢&#xff1f; &…

FS2462是泛海微自主开发的5A降压型同步整流芯片

FS2462是泛海微自主开发的5A降压型同步整流芯片&#xff0c;是国内首家大电流同步5A芯片&#xff0c;内部集成极低RDS内阻20豪欧金属氧化物半导体场效应晶体管的(MOSFET)。输入工作电压宽至4.75V到21V&#xff0c;输出电压1.0V可调至20V。5A的连续负载电流输出可保证系统各状态…

Landing AI:计算机视觉数据标注AI平台

【产品介绍】 Landing AI是一家由人工智能领域的知名专家、Coursera联合创始人、前百度首席科学家、Google大脑创始负责人吴恩达博士创立的公司&#xff0c;旨在为各行各业提供先进的计算机视觉解决方案。 Landing AI的核心产品是LandingLens&#xff0c;一个基于云端的计算机视…

前端开发代码规范工具

规范化是前端工程化的一个重要部分。现在&#xff0c;有许多工具能够辅助我们实行代码的规范化,比如你一定知道的 ESLint 和 Prettier。 今天&#xff0c;来聊聊这些工具的工作原理和基本使用&#xff0c;了解它们是如何发挥作用的&#xff0c;以及如何更好地利用这些工具去规…

AI成功破译古老未知语言,人工智能技术开辟历史研究新时代

近年来&#xff0c;人工智能在各个领域取得了突飞猛进的发展&#xff0c;成为了当今社会讨论的热点。尽管有关其使用的争议不断&#xff0c;但AI技术在某些方面的作用已经不容忽视。 最近&#xff0c;以色列特拉维夫大学和阿里尔大学的研究者们联手研发了一款能够破译古老未知…

Nature:刘清华团队揭示调控睡眠时间的关键分子通路

导读 你能做到一周不睡觉吗&#xff1f;良好的睡眠对我们保证生活质量十分重要。不过&#xff0c;有些人每天只需睡4-6个小时&#xff0c;有些人则需要8个小时&#xff08;可能还不够&#xff09;&#xff0c;这是什么原因导致的&#xff1f; 其实&#xff0c;这也是很多科学…

阿里云服务器镜像是什么意思?

阿里云服务器镜像是云服务器的装机盘&#xff0c;镜像是为云服务器安装操作系统的。云服务器镜像系统怎么选择&#xff1f;云服务器操作系统镜像分为Linux和Windows两大类&#xff0c;Linux可以选择Alibaba Cloud Linux&#xff0c;Windows可以选择Windows Server 2022数据中心…

怎样恢复删除的视频?这5个方法才是正确答案!

案例&#xff1a;怎样恢复删除的视频&#xff1f; 【我是个视频爱好者&#xff0c;平常会在电脑中存很多视频&#xff0c;但也经常会将很多视频误删&#xff0c;怎样恢复删除的视频呢&#xff1f;希望大家给我一些建议&#xff01;】 在摄影摄像技术较发达的今天&#xff0c;…

cond conv 代码-思想

参考博客&#xff1a; 1 解析图示最清楚动态卷积之CondConv思想和代码实现_&永恒的星河&的博客-CSDN博客 2 知乎的解释&#xff0c;简洁明了CondConv代码解析 - 知乎 知乎提供code&#xff1a;External-Attention-pytorch/CondConv.py at master xmu-xiaoma666/Extern…

详解MySQL索引失效

目录 B树结构 测试数据 索引失效的情况 没有用到索引 违反左前缀原则 范围查询断索引 like需要分情况 结果数据超过半数 B树结构 索引失效的根本原因其实就是违反了B树的结构特性&#xff0c;查找的时候没办法在B树上继续走下去&#xff0c;所以首先我们来回顾一下B树…

进程控制(中)

目录&#xff1a; 1.status获取子进程退出的退出码和信号 2.不进行位操作方式获取子进程的退出码和信号 3.waitpid 第三个参数options ------------------------------------------------------------------------------------------------------------------------------- 1.…

工业4.0,为什么数字化转型这么难,上了ERP还要上MES

工业4.0时代&#xff0c;中国制造企业已经面临着与国际先进水平的差距&#xff0c;更多的企业在寻找新的发展道路&#xff0c;数字化转型是制造业企业转型升级的必由之路。但是&#xff0c;许多制造型企业由于在传统生产过程中&#xff0c;业务数据不能得到有效监控、生产过程数…

人脸修复增强调研

Real-ESRGAN 工程地址&#xff1a;https://github.com/xinntao/Real-ESRGAN 效果&#xff1a; 人脸增强部分&#xff0c;调用的GFPGAN. GFPGAN 工程地址&#xff1a;https://github.com/TencentARC/GFPGAN 论文效果&#xff1a; BasicSR-ESRGAN&#xff1a; 项目地址&a…