在学习 Lambda 表达式时,我们提到如果接口中只有一个抽象方法(可以包含多个默认方法或多个 static 方法),那么该接口就是函数式接口。@FunctionalInterface 就是用来指定某个接口必须是函数式接口,所以 @FunInterface 只能修饰接口,不能修饰其它程序元素

函数式接口就是为 Java 8 的 Lambda 表达式准备的,Java 8 允许使用 Lambda 表达式创建函数式接口的实例,因此
Java 8 专门增加了 @FunctionalInterface。

例如,如下程序使用 @FunctionalInterface 修饰了函数式接口。

@FunctionalInterface
public interface FunInterface {static void print() {System.out.println("C语言中文网");}default void show() {System.out.println("我正在学习C语言中文网Java教程");}void test(); // 只定义一个抽象方法
}

编译上面程序,可能丝毫看不出程序中的 @FunctionalInterface 有何作用,因为 @FunctionalInterface 注解的作用只是告诉编译器检查这个接口,保证该接口只能包含一个抽象方法,否则就会编译出错。

@FunctionalInterface 注解主要是帮助程序员避免一些低级错误,例如,在上面的 FunInterface 接口中再增加一个抽象方法 abc(),编译程序时将出现如下错误提示:
“@FunctionInterface”批注无效;FunInterface不是functional接口

1.6 @FunctionalInterface注解相关推荐

  1. java注解 interface_java @FunctionalInterface注解详解

    下面要给大家介绍的就java @FunctionalInterface注解,对于@FunctionalInterface注解不大了解的人,可以通过下面的文章来了解一下哦. 在学习Lambda表达式的时 ...

  2. Java @FunctionalInterface注解

    @FunctionalInterface 就是用来指定某个接口必须是函数式接口,所以 @FunInterface 只能修饰接口,不能修饰其它程序元素. 函数式接口就是为 Java 8 的 Lambda ...

  3. java8 functionalinterface注解_@FunctionalInterface注解的使用

    被@FunctionalInterface注解标记的类型表明这是一个函数接口.从概念上讲,函数接口只有一个抽象方法.如果接口声明的抽象方法覆写Object类的公共方法,那这方法不算作接口的抽象方法,因 ...

  4. java8 functionalinterface注解_【Java8】@FunctionalInterface

    阅读目录 什么是函数式接口(Functional Interface) 函数式接口用途 关于@FunctionalInterface注解 函数式接口里允许定义默认方法 函数式接口里允许定义静态方法 函 ...

  5. 基于Spring Boot应用@FunctionalInterface注解

    记录:291 场景:为了理解和应用@FunctionalInterface注解.@FunctionalInterface是Java语言规范定义函数式接口的注解.它作用在只有一个抽象方法的接口.默认方法 ...

  6. Java 8 - 01 优雅编程 lambda 以及 @FunctionalInterface注解一点通

    文章目录 Pre 为啥需要lambda lambda的妙用 @FunctionalInterface Pre 在软件工程中,不管你做什么,用户的需求肯定会变的,如何应对这样不断变化的需求? 理想的状态 ...

  7. JAVA8特性之函数式接口-@FunctionalInterface注解

    函数式接口: 定义: 就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口,总体有点像匿名类 @FunctionalInterface: 该注解可加可不加,它是函数式接口语法检查注解的,当然最 ...

  8. @FunctionalInterface函数式接口注解

    @FunctionalInterface注解 作用于接口上.表明这个接口是一个特殊的接口即 :函数式接口 一般的接口可以有任意的抽象方法.但是函数式接口却规定了该接口只能有一个抽象的方法.正是由于这点 ...

  9. Java注解---通俗易懂

    本文转载于Java注解-最通俗易懂的注解 Annotation 中文译过来就是注解.标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解. 我个人认为,比较糟糕的技术文 ...

最新文章

  1. java desktop类 能打开共享文件夹中的文件吗_计算机二级之JAVA篇
  2. apache2 指令存取
  3. 洛谷P1040 加分二叉树运用区间DP(动态规划)求解
  4. 垂直梯形校正画质损失多少_投影仪梯形校正会影响画质吗?投影仪梯形校正调不正怎么办?...
  5. boost::hana::detail::unpack_flatten用法的测试程序
  6. lambda 和 std::function
  7. 按钮点击计数器存入mysql_按钮点击数统计计数器(PHP+MYSQL+JS)
  8. 使用equals判断对象是否相等出现的错误
  9. centos7 关闭防火墙和selinux
  10. 15_传智播客iOS视频教程_OC语言完全兼容C语言
  11. Silverlight 离线安装包
  12. Wap模拟器,pc端浏览器,手机wap网站,web项目
  13. 被迫学计算机,IBM超级计算机Watson爆粗口 被迫“洗脑”
  14. 常用的电脑快捷键,常用快捷键大全,提高办公工作效率
  15. C语言 将一个字符串转换为字符,每两个字符间用空格隔开
  16. Underexposed Photo Enhancement using Deep Illumination Estimation阅读札记
  17. Delphi使用逍遥安卓模拟器
  18. 【51nod】---1278 相离的圆(二分排序)
  19. 过敏体质是一种什么样的体验
  20. 职业资格证书查询与验证

热门文章

  1. 成功解决import matplotlib; matplotlib.use('Agg') # pylint: disable=multiple-statements
  2. (已解决) MySQL: ERROR 1045 (28000): Access denied for user 'xxxxx'@'localhost' (using password: NO)
  3. 集成学习-Boosting集成学习算法LightGBM
  4. Jmeter Web 性能测试入门 (六):Jmeter 解析 response 并传递 value
  5. goLand工程结构管理
  6. A.01.01—模块的输入—低端输入
  7. Linux 网络子系统之NAPI书签
  8. Struts2自定义Result处理JSON
  9. shell语法简单介绍
  10. Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果