函数式接口

概念

函数式接口在Java中是指:有且仅有一个抽象方法的接口。

函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。

备注:“语法糖”是指使用更加方便,但是原理不变的代码语法。例如在遍历集合时使用的for-each语法,其实底层的实现原理仍然是迭代器,这便是“语法糖”。从应用层面来讲,Java中的Lambda可以被当做是匿名内部类的“语法糖”,但是二者在原理上是不同的。

格式

只要确保接口中有且仅有一个抽象方法即可:

修饰符 interface 接口名称 {
public abstract 返回值类型 方法名称(可选参数信息);// 其他非抽象方法内容
}

由于接口当中抽象方法的public abstract 是可以省略的,所以定义一个函数式接口很简单:

public interface MyFunctionalInterface {void myMethod();
}

@FunctionalInterface注解

与@Override 注解的作用类似,Java 8中专门为函数式接口引入了一个新的注解: @FunctionalInterface 。该注解可用于一个接口的定义上:

@FunctionalInterface
public interface MyFunctionalInterface {void myMethod();
}

一旦使用该注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错。需要注意的是,即使不使用该注解,只要满足函数式接口的定义,这仍然是一个函数式接口,使用起来都一样。

package com.learn.demo01.FunctionalInterface;
/*函数式接口:有且只有一个抽象方法的接口,称之为函数式接口当然接口中可以包含其他的方法(默认,静态,私有)@FunctionalInterface注解作用:可以检测接口是否是一个函数式接口是:编译成功否:编译失败(接口中没有抽象方法抽象方法的个数多余1个)*/
@FunctionalInterface
public interface MyFunctionalInterface {//定义一个抽象方法public abstract void method();
}
package com.learn.demo01.FunctionalInterface;
/*@Override注解检查方法是否为重写的方法是:编译成功否:编译失败*/
public class MyFunctionalInterfaceImpl implements MyFunctionalInterface{@Overridepublic void method() {}/*@Overridepublic void method2() {}*//*@Overridepublic void method3() {}*/
}

函数式接口的概念函数式接口的定义相关推荐

  1. 第十章:Java之接口基本概念、接口实现多继承、Object类

    专栏目录首页:[专栏必读]Java基础教程和数据结构内容导航和学习说明 注意:本文中会多次使用上一节(第九章:Java多态理解.多态实现.重写.转型和抽象类)中的抽象类 文章目录 一:接口基本概念 ( ...

  2. PHP接口的概念与接口的应用场景

    类: 是某一类事物的抽象,是某类对象的蓝图. 举例: 比如: 女娲造人时,脑子中关于人的形象 就是人类 class Human 如果,女娲决定造人---->形象又没最终定稿时,---->她 ...

  3. Java8之函数式接口及常用函数式接口

    目录 函数式接口 1.概念 2.@FunctionalInterface 3.函数式接口使用方式 常用函数式接口 1.JDK提供的函数式接口举栗 2.Supplier 3.Consumer 4.Pre ...

  4. 同一个项目相互调接口_超详细——接口测试总结与分享(一)

    1,接口的概念 1.接口是啥? 接口是传递数据的通道 接口测试: 是测试系统组件间接口的一种测试 接口主要包括: 同一个系统中模块与模块间的接口/前端后端接口, 另一个是跨系统平台与平台间的对接(内部 ...

  5. 面向对象的接口思想与函数式编程

    1,接口的基本定义格式: public interface 接口名称{ //组成部分:可以包含有抽象,静态,默认,私有方法,常量. } 2.抽象方法 定义:public abstract  返回值 方 ...

  6. Java基础二十二:函数式接口介绍,函数式接口作为方法参数、返回值,Supplier接口、Consumer接口、Predicate接口、Function接口基本介绍及其案例小练习

    函数式接口 1. 函数式接口概念及基本使用 1.函数式接口:有且仅有一个抽象方法的接口,函数式接口就是Lambda表达式使用的前提 2. Java中的函数式编程体现的就是Lambda表达式,所以函数式 ...

  7. Java 函数式编程案例(函数式接口作为参数和返回值)

    文章目录 案例1:函数式接口作为参数 1. 1 原日志代码 1.2 优化的代码 案例2:函数式接口作为返回值 实际开发中使用的 案例1:函数式接口作为参数 1. 1 原日志代码 public clas ...

  8. 【Web接口测试_基础概念】接口概念、接口分类、接口定义、接口规范、接口方法、接口用例设计整理

    [接口基础] 1.接口测试概念 1.1 基础概念 接口的定义:接口英文"interface",表示某个对象和外界交互的部分. 1.2接口的分类: ①用户UI接口,表示提供给用户操作 ...

  9. java中接口文件创建_功能接口简介–在Java 8中重新创建的概念

    java中接口文件创建 世界各地的所有Java开发人员都将至少使用以下接口之一:java.lang.Runnable,java.awt.event.ActionListener,java.util.C ...

最新文章

  1. 【原创】CGAL中,2D Arrangements学习笔记
  2. oracle中forall in,oracle10g的forall功能加强
  3. [flask]gunicorn配置文件
  4. js (查重)键值对数组(一维数组),并归类计数
  5. 正则表达式 6. 存在(或)
  6. ubuntu使用apt-get时出现could not get lock怎么解决
  7. 造成ORA-01843 无效的月份 的一些原因
  8. 郁闷的C小加(一)(后缀表达式)
  9. oracle rac 在完成安装错误。
  10. 申报表计算机代码是什么,金税盘的维护费在申报表上面有一个要填写减免性质代码怎么填啊 ?那个代码是什么呢?...
  11. TensorFlow分类任务入门
  12. 嵌入式开发有必要学习python吗?
  13. Windows内核安全与驱动编程学习笔记----1.WDK安装
  14. 微博粉丝精灵_天猫精灵“布蕉绿”新品上线,解锁智能音箱潮流新玩法!
  15. 设置浏览器保护色(chrome)
  16. ccsa安学网小程序_CCSA安学网题库1
  17. iOS-规避iOS审核4.3规则的重心
  18. svnserve配置
  19. Kusto Query Language (KQL) 学习笔记
  20. emoji-mart或者emoji-picker-react实现一个类似于微信聊天的在线发送表情,再加一个带源码的纯js实现,emoji图片本地加载

热门文章

  1. HDU 5938 Four Operations 【字符串处理,枚举,把数字字符串变为数值】
  2. Memcached 数据缓存系统
  3. jsTree通过json数据初始化时,如何控制每个选项的图标(icon)显示
  4. Java正则表达式入门
  5. 【REST SOAP】REST和SOAP Web Service的区别比较
  6. 分页控件 实战 Post篇
  7. JS学习--Date对象
  8. CodeForces Round #403 (Div.2) A-F
  9. JVM基础(6)-常用参数总结
  10. ROS 命令以及相关内容学习(二)