什么是函数式接口(Functional Interface)

其实之前在讲Lambda表达式的时候提到过,所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法

这种类型的接口也称为SAM接口,即Single Abstract Method interfaces。

函数式接口用途

它们主要用在Lambda表达式和方法引用(实际上也可认为是Lambda表达式)上。

如定义了一个函数式接口如下:

  1. @FunctionalInterface
  2. interface GreetingService
  3. {
  4. void sayMessage(String message);
  5. }

那么就可以使用Lambda表达式来表示该接口的一个实现(注:JAVA 8 之前一般是用匿名类实现的):

  1. GreetingService greetService1 = message -> System.out.println("Hello " + message);

关于@FunctionalInterface注解

Java 8为函数式接口引入了一个新注解@FunctionalInterface,主要用于编译级错误检查,加上该注解,当你写的接口不符合函数式接口定义的时候,编译器会报错。

正确例子,没有报错

  1. @FunctionalInterface
  2. interface GreetingService
  3. {
  4. void sayMessage(String message);
  5. }

错误例子,接口中包含了两个抽象方法,违反了函数式接口的定义,Eclipse报错提示其不是函数式接口。

aaarticlea/png;base64,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" alt="" />

提醒:加不加@FunctionalInterface对于接口是不是函数式接口没有影响,该注解知识提醒编译器去检查该接口是否仅包含一个抽象方法

函数式接口里允许定义默认方法

函数式接口里是可以包含默认方法,因为默认方法不是抽象方法,其有一个默认实现,所以是符合函数式接口的定义的;

如下代码不会报错:

  1. @FunctionalInterface
  2. interface GreetingService
  3. {
  4. void sayMessage(String message);
  5.  
  6. default void doSomeMoreWork1()
  7. {
  8. // Method body
  9. }
  10.  
  11. default void doSomeMoreWork2()
  12. {
  13. // Method body
  14. }
  15. }

函数式接口里允许定义静态方法

函数式接口里是可以包含静态方法,因为静态方法不能是抽象方法,是一个已经实现了的方法,所以是符合函数式接口的定义的;

如下代码不会报错:

  1. @FunctionalInterface
  2. interface GreetingService
  3. {
  4. void sayMessage(String message);
  5. static void printHello(){
  6. System.out.println("Hello");
  7. }
  8. }

函数式接口里允许定义java.lang.Object里的public方法

函数式接口里是可以包含Object里的public方法,这些方法对于函数式接口来说,不被当成是抽象方法(虽然它们是抽象方法);因为任何一个函数式接口的实现,默认都继承了Object类,包含了来自java.lang.Object里对这些抽象方法的实现;

如下代码不会报错:

  1. @FunctionalInterface
  2. interface GreetingService
  3. {
  4. void sayMessage(String message);
  5.  
  6. @Override
  7. boolean equals(Object obj);
  8. }

JDK中的函数式接口举例

java.lang.Runnable,

java.awt.event.ActionListener,

java.util.Comparator,

java.util.concurrent.Callable

java.util.function包下的接口,如Consumer、Predicate、Supplier等

参考资料

https://sanaulla.info/2013/03/21/introduction-to-functional-interfaces-a-concept-recreated-in-java-8/

http://howtodoinjava.com/java-8/functional-interface-tutorial/

JAVA 8 函数式接口 - Functional Interface的更多相关文章

  1. Java 8函数式接口functional interface的秘密

    Java 8函数式接口functional interface的秘密 2014年10月29日 17:52:55 西瓜可乐520 阅读数:3729   目录 [−] JDK 8之前已有的函数式接口 新定 ...

  2. Java8 函数式接口-Functional Interface

    目录 函数式接口: JDK 8之前已有的函数式接口: 新定义的函数式接口: 函数式接口中可以额外定义多个Object的public方法一样抽象方法: 声明异常: 静态方法: 默认方法 泛型及继承关系 ...

  3. java8函数式接口(Functional Interface)

    介绍 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为 lambda 表达式(箭头函数). 函数式接口代 ...

  4. Java中的函数式编程(二)函数式接口Functional Interface

    写在前面 前面说过,判断一门语言是否支持函数式编程,一个重要的判断标准就是:它是否将函数看做是"第一等公民(first-class citizens)".函数是"第一等公 ...

  5. Java 8 函数式接口

    函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为 lambda 表达式. Lambda 表达式和方法引用 ...

  6. Java 8 新特性-菜鸟教程 (3) -Java 8 函数式接口

    Java 8 函数式接口 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为lambda表达式. 函数式接 ...

  7. Java之函数式接口@FunctionalInterface详解(附源码)

    Java之函数式接口@FunctionalInterface详解 函数式接口的定义 在java8中,满足下面任意一个条件的接口都是函数式接口: 1.被@FunctionalInterface注释的接口 ...

  8. Java基础-面向接口(interface)编程

    Java基础-面向接口(interface)编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类 ...

  9. Java常用函数式接口--Consumer接口andThen()方法使用案例(二)

    Java常用函数式接口--Consumer接口使用案例

随机推荐

  1. Winform 显示Gif图片

    代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data ...

  2. .NET Core 单元测试 MSTest

    .NET Core 单元测试 MSTest ,MSTest Framework 已经支持 .NET Core RC2 / ASP.NET Core RC2. 之前都是使用 xUnit.net ,现在 ...

  3. IIS 7.5 应用程序池预热模块组件

    预热组件下载地址:下载地址 IIS预热模块配置界面插件:下载地址 Warm Up设定方式: (1) 应用程序池层级:只要有需要的应用程序池的Start Mode设定AlwaysRunning就可以 ( ...

  4. kFreeBSD有活过来的迹象?UbuntuBSD

    那些年追过的FreeBSD分支,有debian系的kFreeBSD,arch系的archBSD现在叫pacBSD,gentoo系的gentooBSD:但基本上在虚拟机环境很难成功安装http://ww ...

  5. R语言XML格式数据导入与处理

    数据解析 XML是一种可扩展标记语言,它被设计用来传输和存储数据.XML是各种应用程序之间进行数据传输的最常用的工具.它与Access,Oracle和SQL Server等数据库不同,数据库提供了更强 ...

  6. PHP 导出Excel 文档

    下面是总结的几个使用方法 include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; //或者include 'PHPExcel/ ...

  7. 粒子动画Particleground.js

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. 【特别推荐】10款唯美浪漫的婚礼 & 结婚纪念网站模板

    互联网的重要性不言而喻,如今我们的生活已经完全离不开网络.这里给大家分享一组唯美浪漫的结婚邀请网站以及婚礼请柬网站模板,如果你也正想制作这样的网站,相信这些漂亮的网站模板能够带给你很大的帮助,让你快速 ...

  9. ie7下的javascript兼容

    <a href="javascript:;" onclick="functionone();"></a> <script> ...

  10. JavaScript异步机制

    单线程异步执行的JavaScript JavaScript是单线程异步执行的,单线程意味着代码在任务队列中会按照顺序一个接一个的执行.异步代表JavaScript代码在任务队列中的顺序并不完全等同于代 ...