JAVA 8 函数式接口--Consumer
从JDK8开始java支持函数式编程,JDK也提供了几个常用的函数式接口,这篇主要介绍Consumer接口。
文本介绍的顺序依次为:
- 源码介绍
- 使用实例
- jdk内对Consumer的典型使用
- 扩展类介绍
源码介绍
1 |
package java.util.function; import java.util.Objects; /** |
源码只有2个方法,也比较容易理解,我们下面来看一下具体的使用方法。
使用实例
1 |
package jdk8; import java.util.function.Consumer; public class ConsumerTest { public static void main(String[] args) { |
下面是执行结果:
1 |
print square : 4 first x : 1 |
在testAndThen()方法的执行结果可以看到打印的顺序和出现异常的情况(third x : 1 并没有输出)
上面只是一个简单的使用,主要为了说明使用方式。对于Consumer的工作实践目前还未使用,并没有好的例子。
jdk内对Consumer的典型使用
在jdk内对Consumer的典型使用非foreach莫属了(在 java.lang.Iterable内),下面是源码:
1 |
/** |
方法接收一个Consumer对象,对this集合执行循环相同的操作。
TODO:除Iterable外还有很多地方使用到了Consumer,待后续使用到在添加。
扩展类介绍
Consumer的accept只接受一个参数,那如果要是想使用多个参数要怎么办?jdk8又提供了一个BiConsumer接口类,该类与Consumer的区别是可以接受2个参数。
jdk8还对Consumer和BiConsumer各提供了3个常用的相关接口类,见下表:
类名 | 描述 |
IntConsumer | 接受单个int型参数的Consumer操作 |
DoubleConsumer | 接受单个double型参数的Consumer操作 |
LongConsumer | 接受单个long型参数的Consumer操作 |
ObjIntConsumer | 接受2个int型参数的Consumer操作,不支持andThen方法 |
ObjDoubleConsumer | 接受2个double型参数的Consumer操作,不支持andThen方法 |
ObjLongConsumer | 接受2个long型参数的Consumer操作,不支持andThen方法 |
转载链接:http://www.sanjinbest.com/uncategorized/JAVA-8-函数式接口-Consumer/
JAVA 8 函数式接口--Consumer的更多相关文章
- Java常用函数式接口--Consumer接口andThen()方法使用案例(二)
Java常用函数式接口--Consumer接口使用案例
- Java常用函数式接口--Consumer接口使用案例
第一种方式: 第二种方式:
- Java 8 函数式接口
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为 lambda 表达式. Lambda 表达式和方法引用 ...
- Java 8 新特性-菜鸟教程 (3) -Java 8 函数式接口
Java 8 函数式接口 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为lambda表达式. 函数式接 ...
- Java 8函数式接口functional interface的秘密
Java 8函数式接口functional interface的秘密 2014年10月29日 17:52:55 西瓜可乐520 阅读数:3729 目录 [−] JDK 8之前已有的函数式接口 新定 ...
- Java之函数式接口@FunctionalInterface详解(附源码)
Java之函数式接口@FunctionalInterface详解 函数式接口的定义 在java8中,满足下面任意一个条件的接口都是函数式接口: 1.被@FunctionalInterface注释的接口 ...
- Java常用函数式接口--Predicate接口使用案例
Java常用函数式接口--Predicate接口使用案例 该方法可以使用and来优化: 调用:
- Java函数式接口Consumer
Consumer是java8提供的函数式接口之一,意思为消费者,接受参数而不返回值 void accept(T t); default Consumer<T> andThen(Consum ...
- JAVA 8 函数式接口 - Functional Interface
什么是函数式接口(Functional Interface) 其实之前在讲Lambda表达式的时候提到过,所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法. 这种类型的接 ...
随机推荐
- Python3.7和数据库MySQL交互(二)SQLyog安装教程
首先安装MySQL数据库,初学者建议选择图形化客户端. Toad for MySQL.MySQL-Front.Navicat for MySQL.SQLyog. 官方下载链接: Toad for My ...
- python 10
不想写了,用一下强大的copy功能吧!! (转自:我的同桌)
- Qt学习--信号与槽(多窗口的实现)
按照helloword的创建过程 创建一个新的项目(项目名:window) 之后进行多窗口的实现过程: (参考:http://www.qter.org/portal.php?mod=view& ...
- socket端口绑定后通过bat干掉
@echo off::port为需要去绑定端口set port=8888for /f "tokens=5 delims= " %%a in ('netstat -ano ^|fin ...
- 添加本地jar包到maven仓库
mvn install:install-file -Dfile=D:\video-lib\log4j-.jar -DgroupId=video -DartifactId=log4j -Dversion ...
- 使用IDEA创建SSM框架
- windows下Redis的安装和使用
1.要安装Redis,首先要获取安装包.Windows的Redis安装包需要到以下GitHub链接找到.链接:https://github.com/MSOpenTech/redis.打开网站后,找到R ...
- c# 枚举安卓系统中所有目录及文件名
using Android.App; using Android.Widget; using Android.OS; using System.Runtime.InteropServices; nam ...
- git 命令提交文件
方法/步骤 打开要添加的文件的位置,右键,点击下面强调的内容,进入命令页面 先执行命git pull,这是提交的基本操作, git status,查看现在当前的文件状态 没有看到你现在要添加的文件 ...
- Docker系列(四)Centos6.5 搭建私人镜像仓库 v2
.下载.运行registry 下载registry镜像: $ docker pull hub.c.163.com/library/registry 这个下载的过程有点长,耐心等待一下.O(∩_∩)O哈 ...