函数式接口——@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表达式相关推荐

  1. java 函数式接口与lambda表达式的关系

    函数式接口与lambda表达式的关系 在java中,lambda表达式与函数式接口是不可分割的,都是结合起来使用的. 对于函数式接口,我们可以理解为只有一个抽象方法的接口,除此之外它和别的接口相比并没 ...

  2. java 函数式接口与Lambda表达式

    目录 函数式接口 函数式接口简介 什么是 @FunctionalInterface 内置的函数式接口 Stream和Lambda常用的函数式接口 函数式接口的使用 Lambda表达式 Lambda来源 ...

  3. JAVA学习笔记 15 - 函数式接口、Lambda表达式和方法引用

    本文是Java基础课程的第十五课.主要介绍在JDK8中,Java引入的部分新特性,包括函数式接口.Lambda表达式和方法引用.这些新特性使得Java能够在按照面向对象思想进行开发的基础上,融合函数式 ...

  4. Java新特性:Java8函数式接口与Lambda表达式(一)

    摘要 何为函数式接口? 什么是lambda表达式,lambda表达式的本质: 函数式接口与lambda表达式的联系:lambda是实现函数式接口的一个快捷方式,可以作为函数式接口的一个实例: 常用Ja ...

  5. Java 函数式编程和 lambda 表达式

    为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论.函数式与命令式编程的区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉代码要怎么做.说白了,函数式编程是基于 ...

  6. Java函数式编程和Lambda表达式

    文章目录 什么是函数式编程 Lambda表达式 @FunctionalInterface函数式接口 Lambda表达式的格式 方法引用 什么是函数式编程 相信大家都使用过面向对象的编程语言,面向对象编 ...

  7. java8 Lambda表达式的应用(函数式接口、lambda表达式,方法引用及Stream API)

    之前写了一篇博客简单介绍了一下java 8发布新增的一些特性功能,java 8在2014年发布,距今也不少年了,但是lambda表达式使用并不熟练,现在一边学习,一边记录一下. 目录 一.Lambda ...

  8. Java8函数式接口与Lambda表达式

    摘要 何为函数式接口? 什么是lambda表达式,lambda表达式的本质: 函数式接口与lambda表达式的联系:lambda是实现函数式接口的一个快捷方式,可以作为函数式接口的一个实例: 常用Ja ...

  9. Lambda01 编程范式、lambda表达式与匿名内部类、函数式接口、lambda表达式的写法...

    1 编程范式 主要的编程范式有三种:命令式编程,声明式编程和函数式编程. 1.1 命令式编程 关注计算机执行的步骤,就是告诉计算机先做什么后做什么 1.2 声明式编程 表达程序的执行逻辑,就是告诉计算 ...

最新文章

  1. linux运维基础2
  2. python映射类型-详解Python中映射类型(字典)操作符的概念和使用
  3. 过了这么多年,才发现写的最多的代码竟然是...
  4. [P4063][JXOI2017]数列(DP)
  5. c索引超出了数组界限_关于MATLAB逻辑数组索引的二三事(二)
  6. ajax兼容写法,Ajax的兼容性问题
  7. qt结合arcgis for qt开发(鼠标点击地图获取坐标,坐标转换)
  8. C++ 正则获取url中参数
  9. python3爬虫用代理池爬虫搜狗微信文章
  10. Jmeter使用函数助手生成随机数,处理同一个随机数多处使用
  11. excel去除小数点后面的数据,将数字取整
  12. 工业平板电脑选择需要注意的地方
  13. realsense D455读取深度图时,深度值不变问题解决方案
  14. 【威联通QNAP】TS-216折腾踩坑记录(更新于22.11.22)
  15. 输入框实时字数计算移动端bug解决
  16. 沁恒CH554 KEIL环境搭建
  17. php博饼,2018博饼html5
  18. 让人脑壳疼的STP是如何做到防止环路?-理论
  19. 疯狂的大柚柚带你玩转MSP-ESP430G2(基础篇)----(九)IO口的介绍
  20. php生成word的三种方式,php生成word两种方法

热门文章

  1. BZOJ 4997 [Usaco2017 Feb]Why Did the Cow Cross the Road III
  2. maven POM总结
  3. 15. HTML 块 div span
  4. 移动硬盘安装Windows7
  5. 如何修改Vs2008环境变量
  6. 动态规划在求解硬币问题中的应用(JAVA)--币制最大化、找零问题、硬币收集问题
  7. Golang——指针的使用、数组指针和指针数组、指针与切片、指针与结构体、多级指针
  8. 启继承父位在什么时候_为什么少儿口才现在越来越受到家长们的重视
  9. chipsel语言_用VHDL语言对FPGA和CPLD器件进行开发时应注意的事项
  10. python md5解密_python 生成文件MD5码