Java @FunctionalInterface注解
2年前 (2024-04-27)
在学习 Lambda 表达式时,我们提到如果接口中只有一个抽象方法(可以包含多个默认方法或多个 static 方法),那么该接口就是函数式接口。@FunctionalInterface 就是用来指定某个接口必须是函数式接口,所以 @FunInterface 只能修饰接口,不能修饰其它程序元素。
函数式接口就是为 Java 8 的 Lambda 表达式准备的,Java 8 允许使用 Lambda 表达式创建函数式接口的实例,因此 Java 8 专门增加了 @FunctionalInterface。
例如,如下程序使用 @FunctionalInterface 修饰了函数式接口。
编译上面程序,可能丝毫看不出程序中的 @FunctionalInterface 有何作用,因为 @FunctionalInterface 注解的作用只是告诉编译器检查这个接口,保证该接口只能包含一个抽象方法,否则就会编译出错。@FunctionalInterface
public interface FunInterface {
static void print() {
System.out.println("C语言中文网");
}
default void show() {
System.out.println("我正在学习C语言中文网Java教程");
}
void test(); // 只定义一个抽象方法
}
@FunctionalInterface 注解主要是帮助程序员避免一些低级错误,例如,在上面的 FunInterface 接口中再增加一个抽象方法 abc(),编译程序时将出现如下错误提示:
“@FunctionInterface”批注无效;FunInterface不是functional接口
- 随机文章
- 马尔代夫首都火灾(马尔代夫首都发生火灾,数十人受伤)
- 杭州 马尔代夫 机票(杭州至马尔代夫航班,预订机票优惠回馈!)
- 马尔代夫鸟类图片(马尔代夫内景:多彩鸟类的诱人画卷)
- 马尔代夫飞机外观(马尔代夫飞机独具匠心外观重现现场)
- 东航 马尔代夫 游记(东航探索马尔代夫——我的游记)
- 马尔代夫哪旅游(马尔代夫旅游胜地介绍)
- 马累马尔代夫旅游(马尔代夫之行:畅游马累的独特美景)
- 中国马尔代夫情侣(中国情侣在马尔代夫遭遇海堤裂缝事故)
- 咸阳夏门马尔代夫(咸阳夏门:海底别墅让你身临马尔代夫)
- 十一 马尔代夫 攻略(十一去马尔代夫必知的攻略分享!)
- 水屋 马尔代夫(后的:水上屋的马尔代夫体验)
- 夏岛 马尔代夫(马尔代夫旅游胜地夏岛)
- 马尔代夫雨后彩虹(马尔代夫雨后现壮丽彩虹)
- 带法斗去马尔代夫(带上法斗,你准备好去马尔代夫了吗?)
- 旅行记之马尔代夫(马尔代夫旅行笔记:天堂般的热带岛屿)
- 海浪席卷马尔代夫(马尔代夫受到强烈海浪袭击,局势紧急)
- 福建马尔代夫海边(福建旅游胜地:马尔代夫风光再现海边)
- 甘肃东方马尔代夫(甘肃东方旅游版马尔代夫,美如仙境!)
- 蕲州江边马尔代夫(蕲州江边打造马尔代夫风情岛主题公园)
- 海南马尔代夫国家(海南旅游打造类似马尔代夫的度假胜地)
- 白马马尔代夫婚礼(浪漫海岛盛典,白马马尔代夫梦幻婚礼)
- 球员 马尔代夫(马尔代夫籍球员成为职业足球运动员)
- 马尔代夫主题作文(美丽马尔代夫:我的热带海滩度假之旅)
- 疫情严重马尔代夫(马尔代夫疫情威胁加剧,加强防控措施)
- 马尔代夫便宜旅游(马尔代夫旅游攻略:省钱攻略大揭秘!)
- 青岛马尔代夫攻略(青岛出发,轻松玩转美丽的马尔代夫!)
- 安缦 马尔代夫(安缦度假村:在马尔代夫享受独特的奢华体验)
- 马尔代夫临空经济(马尔代夫空经济:临空特区引领新发展)
- 马尔代夫冲绳视频(美丽的马尔代夫和冲绳,游记视频分享)
- 斐济 马尔代夫(重写后的标题:美丽岛国斐济与马尔代夫惊艳亮相)
