1.6 @FunctionalInterface注解
在学习 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注解相关推荐
- java注解 interface_java @FunctionalInterface注解详解
下面要给大家介绍的就java @FunctionalInterface注解,对于@FunctionalInterface注解不大了解的人,可以通过下面的文章来了解一下哦. 在学习Lambda表达式的时 ...
- Java @FunctionalInterface注解
@FunctionalInterface 就是用来指定某个接口必须是函数式接口,所以 @FunInterface 只能修饰接口,不能修饰其它程序元素. 函数式接口就是为 Java 8 的 Lambda ...
- java8 functionalinterface注解_@FunctionalInterface注解的使用
被@FunctionalInterface注解标记的类型表明这是一个函数接口.从概念上讲,函数接口只有一个抽象方法.如果接口声明的抽象方法覆写Object类的公共方法,那这方法不算作接口的抽象方法,因 ...
- java8 functionalinterface注解_【Java8】@FunctionalInterface
阅读目录 什么是函数式接口(Functional Interface) 函数式接口用途 关于@FunctionalInterface注解 函数式接口里允许定义默认方法 函数式接口里允许定义静态方法 函 ...
- 基于Spring Boot应用@FunctionalInterface注解
记录:291 场景:为了理解和应用@FunctionalInterface注解.@FunctionalInterface是Java语言规范定义函数式接口的注解.它作用在只有一个抽象方法的接口.默认方法 ...
- Java 8 - 01 优雅编程 lambda 以及 @FunctionalInterface注解一点通
文章目录 Pre 为啥需要lambda lambda的妙用 @FunctionalInterface Pre 在软件工程中,不管你做什么,用户的需求肯定会变的,如何应对这样不断变化的需求? 理想的状态 ...
- JAVA8特性之函数式接口-@FunctionalInterface注解
函数式接口: 定义: 就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口,总体有点像匿名类 @FunctionalInterface: 该注解可加可不加,它是函数式接口语法检查注解的,当然最 ...
- @FunctionalInterface函数式接口注解
@FunctionalInterface注解 作用于接口上.表明这个接口是一个特殊的接口即 :函数式接口 一般的接口可以有任意的抽象方法.但是函数式接口却规定了该接口只能有一个抽象的方法.正是由于这点 ...
- Java注解---通俗易懂
本文转载于Java注解-最通俗易懂的注解 Annotation 中文译过来就是注解.标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解. 我个人认为,比较糟糕的技术文 ...
最新文章
- java desktop类 能打开共享文件夹中的文件吗_计算机二级之JAVA篇
- apache2 指令存取
- 洛谷P1040 加分二叉树运用区间DP(动态规划)求解
- 垂直梯形校正画质损失多少_投影仪梯形校正会影响画质吗?投影仪梯形校正调不正怎么办?...
- boost::hana::detail::unpack_flatten用法的测试程序
- lambda 和 std::function
- 按钮点击计数器存入mysql_按钮点击数统计计数器(PHP+MYSQL+JS)
- 使用equals判断对象是否相等出现的错误
- centos7 关闭防火墙和selinux
- 15_传智播客iOS视频教程_OC语言完全兼容C语言
- Silverlight 离线安装包
- Wap模拟器,pc端浏览器,手机wap网站,web项目
- 被迫学计算机,IBM超级计算机Watson爆粗口 被迫“洗脑”
- 常用的电脑快捷键,常用快捷键大全,提高办公工作效率
- C语言 将一个字符串转换为字符,每两个字符间用空格隔开
- Underexposed Photo Enhancement using Deep Illumination Estimation阅读札记
- Delphi使用逍遥安卓模拟器
- 【51nod】---1278 相离的圆(二分排序)
- 过敏体质是一种什么样的体验
- 职业资格证书查询与验证
热门文章
- 成功解决import matplotlib; matplotlib.use('Agg') # pylint: disable=multiple-statements
- (已解决) MySQL: ERROR 1045 (28000): Access denied for user 'xxxxx'@'localhost' (using password: NO)
- 集成学习-Boosting集成学习算法LightGBM
- Jmeter Web 性能测试入门 (六):Jmeter 解析 response 并传递 value
- goLand工程结构管理
- A.01.01—模块的输入—低端输入
- Linux 网络子系统之NAPI书签
- Struts2自定义Result处理JSON
- shell语法简单介绍
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果