Java四大函数式接口

Java8函数式接口

    • 1. Consumer<T> 消费型接口
    • 2. Supplier <R> 供给型接口
    • 3. Function<T, R> 函数型接口
    • 4. Predicate<T> 断定型接口
    • 5. 四大接口总结

函数式接口有利于lambda表达式的编写和流式计算。在Java中定义了四种函数式接口, Consumer 消费型接口 有参无返, Supplier 供给型函数 无参有返, Function 函数式接口 有参有返, Predicate 断定型接口。 四大接口。接口参数和返回值只有一个。

下面T为类型的泛型,R为返回的泛型

1. Consumer<T> 消费型接口

  1. 匿名内部类实现
// 消费型函数
Consumer<String> consumer = new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println("come in consumer type function..." + s);}
};
  1. lambda演示
private static void consumerDemo() {Consumer<String> consumer = str -> {System.out.println("消费型函数 有参无返");System.out.println(str);};// 调用consumber接口中的函数consumer.accept("bitQian666");
}

2. Supplier <R> 供给型接口

  1. 匿名内部类实现
// 供给型函数
Supplier<String> supplier = new Supplier<String>() {@Overridepublic String get() {return null;}
};
  1. lambda演示
private static void supplierDemo() {// 供给型函数Supplier<String> supplier = () -> "supplier 供给型函数 无参有返";System.out.println(supplier.get());
}

3. Function<T, R> 函数型接口

  1. 匿名内部类实现
// 函数型接口
Function<String, Integer> function = new Function<String, Integer>() {@Overridepublic Integer apply(String s) {return null;}
};
  1. lambda演示
private static void functionDemo() {// 函数型接口Function<String, Integer> function = s -> {System.out.println("这是有参有返回的函数式接口!\t" + s);return 666;};System.out.println(function.apply("hello function!"));
}

4. Predicate<T> 断定型接口

  1. 匿名内部类实现
// 断定型接口
Predicate<String> predicate = new Predicate<String>() {// 参数是泛型 返回是boolean// 调用test方法@Overridepublic boolean test(String s) {return false;}
};
  1. lambda演示
private static void predicateDemo() {// 方法引用 判断输入的字符串 是否为空Predicate<String> predicate = String::isEmpty;System.out.println(predicate.test("hhh"));
}

5. 四大接口总结

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

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

相关文章

前端学习(1316):静态资源

//创建网站服务器模板 const http require(http); const url require(url); //网站服务器对象 const app http.createServer(); const path require(path); const fs require(fs); //客户端有请求 /* const querystring require(querystring); */ app.on(request, (req, …

Linux内核源码目录说明

Linux内核源代码位于/usr/src/linux目录下&#xff0c;其结构分布如图1.3所示&#xff0c;每一个目录或子目录可以看作一个模块&#xff0c;其目录之间的连线表示“子目录或子模块”的关系。下面是对每一个目录的简单描述。 Arch 目录包括了所有和体系结构相关的核心代码。它下…

线程,进程,并发,并行

Java util concurrent 是Java工具包&#xff0c;用于并发编程的。 1. jdk8 文档 2. 进程/线程是什么&#xff1f; 进程&#xff1a; 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元&#xff0c;在传统的操作系统中&#x…

前端学习(1317):静态资源2

//创建网站服务器模板 const http require(http); const url require(url); //网站服务器对象 const app http.createServer(); const path require(path); const fs require(fs); const mime require(mime); //客户端有请求 /* const querystring require(querystring)…

制作双足机器人用易拉罐_小学生手工小制作用易拉罐做飞机模型的方法

阅读本文前&#xff0c;请您先点击上面的“蓝色字体”&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到文章了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。注&#xff1a;本文转载自网络&#xff0c;不代表本平台立场&#xff0c;仅供读…

Lock锁实现多线程卖票

理解多线程卖票demoLock架构使用lock替代synchronized总结使用Lock 实现。Lock架构 使用lock替代synchronized import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;/*** 企业级的多线程代码* 在高内聚低耦合情况下 多线程 操作 资源类…

小程序引入的echarts过大如何解决_解决生鲜行业“获客难”的难题,教你如何妙用小程序...

近年来&#xff0c;随着生鲜食品产业的快速发展&#xff0c;大量企业和商家加入了生鲜食品的“大本营”。但大量的企业和商家也对市场产生了一定的影响&#xff0c;不少生鲜商家陷入了一个困境——难以获得客户。当生鲜食品企业面临“获客难”的困境时&#xff0c;不妨开发一个…

前端学习(1319):node.js异步编程

test,js function getMsg(callback) {setTimeout(function() {callback({msg: hello node js})}, 2000) } getMsg(function(data) {console.log(data); }); callback.js function getData(callback) {callback(123); } getData(function(n) {console.log(被调用了);console.…

docker web程序本地化_Docker-01-Docker介绍

一 什么是虚拟化在计算机中&#xff0c;虚拟化&#xff08;Virtualization&#xff09;是一种资源管理技术&#xff0c;是计算机的各种实体资源&#xff0c;如服务器&#xff0c;网络&#xff0c;内存及存储等&#xff0c;予以抽象&#xff0c;转换后呈现出来&#xff0c;打破实…

tk-mapper 生成器

tk-mapper生成代码代码&#xff0c;项目地址如何使用1. 生成实体类, XML文件, Mapper接口。 2. 版本相关&#xff1a;mapper&#xff1a; 3.4.1mapper-spring-boot-starter: 1.1.2mybatis-generator-core: 1.3.6 3. 这里以SpringBoot为demo, 作为一个程序&#xff0c;运行Gener…

前端学习(1321):node.js得异步api

const fs require(fs);fs.readFile(./1.txt, utf8, (err, result1) > {console.log(result1);fs.readFile(./2.txt, utf8, (err, result2) > {console.log(result2);fs.readFile(./3.txt, utf8, (err, result3) > {console.log(result3);});}); }) 运行结果

面向接口编程的优点_为什么我们要面向接口编程

到底面向&#xff1f;编程面向过程编程( ProcedureOriented、简称 PO) 和 面向对象编程( ObjectOriented、简称 OO) 我们一定听过&#xff0c;然而实际企业级开发里受用更多的一种编程思想那就是&#xff1a;面向接口编程( Interface-Oriented)&#xff01;接口这个概念我们一定…

Android数据库LitePal的存储操作

本文属于转载&#xff0c;在此声明&#xff0c;出处&#xff1a;http://blog.csdn.net/guolin_blog/article/details/38556989 并且感谢guolin分享了这么精彩的博文。以下正文&#xff1a; 经过前面几篇文章的学习&#xff0c;我们已经把LitePal的表管理模块的功能都很好地掌握…

程控电源测试微安电流模式_无缝隙源和负载的切换:双向程控电源的一大门槛...

目前采用电池供电的直流无刷电机驱动的设备越来越多&#xff0c;从电动工具&#xff0c;无人机、机器人、再到电动汽车等。然而电机驱动器和电池的管理始终是研发工程师不得不面对的一道难题。电动机利用的是“电生磁”原理&#xff0c;把电能转换成机械能。但制动&#xff0c;…

前端学习(1324):anysc关键字

//只能出现再异步函数中 暂停异步函数得执行 async function fn() {throw 发生勒一些错误;return 123; } //console.log(fn()) fn().then(function(data) {console.log(data); }).catch(function(err) {console.log(err); }) 运行结果

Pacman主题下给Hexo增加简历类型

原文 http://blog.zanlabs.com/2015/01/02/add-resume-type-to-hexo-under-pacman-theme/ 背景 虽然暂时不找工作&#xff0c;但是想着简历也是个向别人推销自己的好东西。然后也想着折腾点新的东西&#xff0c;如此&#xff0c;这般&#xff0c;便想着研究起写个简历了。形式不…

屏幕输出语句_C语言快速入门——表达式与语句

表达式表达式是由运算符和操作数组合构造成。最简单的表达式是一个单独的操作数&#xff0c;以此作为基础&#xff0c;结合语言自身支持的操作符&#xff0c;就可以建立复杂的表达式。下面是一些表达式&#xff1a;从这里可以看到&#xff0c;操作数可以是数据常量(4&#xff0…

前端学习(1325):await关键字

async function p1() {return p1; } async function p2() {return p2; } async function p3() {return p3; } async function run() {let r1 await p1();let r2 await p2();let r3 await p3();console.log(r1);console.log(r2);console.log(r3);} run(); 运行结果