【Java】函数式接口与Lambda表达式
函数式接口——@FunctionalInterface
Code
@FunctionalInterface
interface IService {void say(String message);
}public class FunctionalInterfaceTest {public static void main(String[] args) {IService serviceObj = message -> System.out.println("Hello, " + message);serviceObj.say("Sam");}
}
输出结果
Hello, Sam
Java8前已有的函数式接口
- java.lang.Runnable
- java.util.concurrent.Callable
- java.security.PrivilegedAction
- java.util.Comparator
- java.io.FileFilter
- java.nio.file.PathMatcher
- java.lang.reflect.InvocationHandler
- java.beans.PropertyChangeListener
- java.awt.event.ActionListener
- javax.swing.event.ChangeListener
Java8新增的package→java.util.function
内含43个函数式接口,如下:
Interface | Description |
---|---|
BiConsumer<T,U> | 代表了一个接受两个输入参数的操作,并且不返回任何结果 |
BiFunction<T,U,R> | 代表了一个接受两个输入参数的方法,并且返回一个结果 |
BinaryOperator<T> | 代表了一个作用于于两个同类型操作符的操作,并且返回了操作符同类型的结果 |
BiPredicate<T,U> | 代表了一个两个参数的boolean值方法 |
BooleanSupplier | 代表了boolean值结果的提供方 |
Consumer<T> | 代表了接受一个输入参数并且无返回的操作 |
DoubleBinaryOperator | 代表了作用于两个double值操作符的操作,并且返回了一个double值的结果 |
DoubleConsumer | 代表一个接受double值参数的操作,并且不返回结果 |
DoubleFunction<R> | 代表接受一个double值参数的方法,并且返回结果 |
DoublePredicate | 代表一个拥有double值参数的boolean值方法 |
DoubleSupplier | 代表一个double值结构的提供方 |
DoubleToIntFunction | 接受一个double类型输入,返回一个int类型结果 |
DoubleToLongFunction | 接受一个double类型输入,返回一个long类型结果 |
DoubleUnaryOperator | 接受一个参数同为类型double,返回值类型也为double |
Function<T,R> | 接受一个输入参数,返回一个结果 |
IntBinaryOperator | 接受两个参数同为类型int,返回值类型也为int |
IntConsumer | 接受一个int类型的输入参数,无返回值 |
IntFunction<R> | 接受一个int类型输入参数,返回一个结果 |
IntPredicate | 接受一个int输入参数,返回一个布尔值的结果 |
IntSupplier | 无参数,返回一个int类型结果 |
IntToDoubleFunction | 接受一个int类型输入,返回一个double类型结果 |
IntToLongFunction | 接受一个int类型输入,返回一个long类型结果 |
IntUnaryOperator | 接受一个参数同为类型int,返回值类型也为int |
LongBinaryOperator | 接受两个参数同为类型long,返回值类型也为long |
LongConsumer | 接受一个long类型的输入参数,无返回值 |
LongFunction<R> | 接受一个long类型输入参数,返回一个结果 |
LongPredicate | R接受一个long输入参数,返回一个布尔值类型结果 |
LongSupplier | 无参数,返回一个结果long类型的值 |
LongToDoubleFunction | 接受一个long类型输入,返回一个double类型结果 |
LongToIntFunction | 接受一个long类型输入,返回一个int类型结果 |
LongUnaryOperator | 接受一个参数同为类型long,返回值类型也为long |
ObjDoubleConsumer<T> | 接受一个object类型和一个double类型的输入参数,无返回值 |
ObjIntConsumer<T> | 接受一个object类型和一个int类型的输入参数,无返回值 |
ObjLongConsumer<T> | 接受一个object类型和一个long类型的输入参数,无返回值 |
Predicate<T> | 接受一个输入参数,返回一个布尔值结果 |
Supplier<T> | 无参数,返回一个结果 |
ToDoubleBiFunction<T,U> | 接受两个输入参数,返回一个double类型结果 |
ToDoubleFunction<T> | 接受一个输入参数,返回一个double类型结果 |
ToIntBiFunction<T,U> | 接受两个输入参数,返回一个int类型结果 |
ToIntFunction<T> | 接受一个输入参数,返回一个int类型结果 |
ToLongBiFunction<T,U> | 接受两个输入参数,返回一个long类型结果 |
ToLongFunction<T> | 接受一个输入参数,返回一个long类型结果 |
UnaryOperator<T> | 接受一个参数为类型T,返回值类型也为T |
【Java】函数式接口与Lambda表达式相关推荐
- java 函数式接口与lambda表达式的关系
函数式接口与lambda表达式的关系 在java中,lambda表达式与函数式接口是不可分割的,都是结合起来使用的. 对于函数式接口,我们可以理解为只有一个抽象方法的接口,除此之外它和别的接口相比并没 ...
- java 函数式接口与Lambda表达式
目录 函数式接口 函数式接口简介 什么是 @FunctionalInterface 内置的函数式接口 Stream和Lambda常用的函数式接口 函数式接口的使用 Lambda表达式 Lambda来源 ...
- JAVA学习笔记 15 - 函数式接口、Lambda表达式和方法引用
本文是Java基础课程的第十五课.主要介绍在JDK8中,Java引入的部分新特性,包括函数式接口.Lambda表达式和方法引用.这些新特性使得Java能够在按照面向对象思想进行开发的基础上,融合函数式 ...
- Java新特性:Java8函数式接口与Lambda表达式(一)
摘要 何为函数式接口? 什么是lambda表达式,lambda表达式的本质: 函数式接口与lambda表达式的联系:lambda是实现函数式接口的一个快捷方式,可以作为函数式接口的一个实例: 常用Ja ...
- Java 函数式编程和 lambda 表达式
为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论.函数式与命令式编程的区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉代码要怎么做.说白了,函数式编程是基于 ...
- Java函数式编程和Lambda表达式
文章目录 什么是函数式编程 Lambda表达式 @FunctionalInterface函数式接口 Lambda表达式的格式 方法引用 什么是函数式编程 相信大家都使用过面向对象的编程语言,面向对象编 ...
- java8 Lambda表达式的应用(函数式接口、lambda表达式,方法引用及Stream API)
之前写了一篇博客简单介绍了一下java 8发布新增的一些特性功能,java 8在2014年发布,距今也不少年了,但是lambda表达式使用并不熟练,现在一边学习,一边记录一下. 目录 一.Lambda ...
- Java8函数式接口与Lambda表达式
摘要 何为函数式接口? 什么是lambda表达式,lambda表达式的本质: 函数式接口与lambda表达式的联系:lambda是实现函数式接口的一个快捷方式,可以作为函数式接口的一个实例: 常用Ja ...
- Lambda01 编程范式、lambda表达式与匿名内部类、函数式接口、lambda表达式的写法...
1 编程范式 主要的编程范式有三种:命令式编程,声明式编程和函数式编程. 1.1 命令式编程 关注计算机执行的步骤,就是告诉计算机先做什么后做什么 1.2 声明式编程 表达程序的执行逻辑,就是告诉计算 ...
最新文章
- linux运维基础2
- python映射类型-详解Python中映射类型(字典)操作符的概念和使用
- 过了这么多年,才发现写的最多的代码竟然是...
- [P4063][JXOI2017]数列(DP)
- c索引超出了数组界限_关于MATLAB逻辑数组索引的二三事(二)
- ajax兼容写法,Ajax的兼容性问题
- qt结合arcgis for qt开发(鼠标点击地图获取坐标,坐标转换)
- C++ 正则获取url中参数
- python3爬虫用代理池爬虫搜狗微信文章
- Jmeter使用函数助手生成随机数,处理同一个随机数多处使用
- excel去除小数点后面的数据,将数字取整
- 工业平板电脑选择需要注意的地方
- realsense D455读取深度图时,深度值不变问题解决方案
- 【威联通QNAP】TS-216折腾踩坑记录(更新于22.11.22)
- 输入框实时字数计算移动端bug解决
- 沁恒CH554 KEIL环境搭建
- php博饼,2018博饼html5
- 让人脑壳疼的STP是如何做到防止环路?-理论
- 疯狂的大柚柚带你玩转MSP-ESP430G2(基础篇)----(九)IO口的介绍
- php生成word的三种方式,php生成word两种方法
热门文章
- BZOJ 4997 [Usaco2017 Feb]Why Did the Cow Cross the Road III
- maven POM总结
- 15. HTML 块 div span
- 移动硬盘安装Windows7
- 如何修改Vs2008环境变量
- 动态规划在求解硬币问题中的应用(JAVA)--币制最大化、找零问题、硬币收集问题
- Golang——指针的使用、数组指针和指针数组、指针与切片、指针与结构体、多级指针
- 启继承父位在什么时候_为什么少儿口才现在越来越受到家长们的重视
- chipsel语言_用VHDL语言对FPGA和CPLD器件进行开发时应注意的事项
- python md5解密_python 生成文件MD5码