JDK8新特性:函数式接口@FunctionalInterface的使用说明
我们常用的一些接口Callable、Runnable、Comparator等在JDK8中都添加了@FunctionalInterface注解。
通过JDK8源码javadoc,可以知道这个注解有以下特点:
1、该注解只能标记在"有且仅有一个抽象方法"的接口上。
2、JDK8接口中的静态方法和默认方法,都不算是抽象方法。
3、接口默认继承java.lang.Object,所以如果接口显示声明覆盖了Object中方法,那么也不算抽象方法。
4、该注解不是必须的,如果一个接口符合"函数式接口"定义,那么加不加该注解都没有影响。加上该注解能够更好地让编译器进行检查。如果编写的不是函数式接口,但是加上了@FunctionInterface,那么编译器会报错。
@FunctionalInterface标记在接口上,“函数式接口”是指仅仅只包含一个抽象方法的接口。
如果一个接口中包含不止一个抽象方法,那么不能使用@FunctionalInterface,编译会报错。
比如下面这个接口就是一个正确的函数式接口:
// 正确的函数式接口
@FunctionalInterface
public interface TestInterface {
// 抽象方法
public void sub();
// java.lang.Object中的方法不是抽象方法
public boolean equals(Object var1);
// default不是抽象方法
public default void defaultMethod(){
}
// static不是抽象方法
public static void staticMethod(){
}
}
————————————————
原文链接:https://blog.csdn.net/aitangyong/article/details/54137067
JDK8新特性:函数式接口@FunctionalInterface的使用说明相关推荐
- java8 interface_Java8新特性:函数式接口@FunctionalInterface使用说明
我们常用的一些接口Callable,Runnable,Comparator等在JDK8中都添加了@FunctionalInterface 注解: 通过JDK8 源码javadoc,可以知道@Funct ...
- JDK8中的新特性——函数式接口
JDK8 简介 概述 Java 8由Oracle从2014年3月18日发布,此版本是自Java 5(发布于2004年)之后的一个重量级版本,也是java发展史上的一个里程碑式的版本.这个版本在JVM. ...
- 学习笔记之-java8的新特性-函数式接口,lambda表达式,方法引用,Stream API,Optional类
1.Lambda表达式 用匿名内部类的方法去创建多线程1.new Thread2.参数传递new Runnable3.重写run方法4.在run方法中去设置线程任务5.调用start问题:我们最终目标 ...
- jdk8新特性(接口新特性、lambda表达式、方法引用、函数式接口、Stream流)和单例设计模式
1.单例设计模式 1.概念: 设计模式:使用固有的流程或方式设计出来的类接口.枚举等元素 2.设计原则: 1.私有化构造方法[private.protected] 2.类中创建最终对象[唯一不能被赋值 ...
- java8新特性_乐字节-Java8新特性-函数式接口
上一篇小乐带大家学过 Java8新特性-Lambda表达式,那什么时候可以使用Lambda?通常Lambda表达式是用在函数式接口上使用的.从Java8开始引入了函数式接口,其说明比较简单:函数式接口 ...
- java新特性-函数式接口-作为方法参数-作为方法的返回值-常用函数式接口-Supplier-Consumer-Predicate-Function
文章目录 函数式接口 概念 函数式接口作为方法参数 函数式接口作为方法的返回值 常用函数式接口 Supplier接口 常用函数式接口 Consumer 函数式接口之 Predicate接口 常用接口之 ...
- JDK8新特性之接口默认方法与静态方法
接口默认方法与静态方法 有这样一些场景,如果一个接口要添加一个方法,那所有的接口实现类都要去实现,而某些实现类根本就不需要实现这个方法也要写一个空实现,所以接口默认方法就是为了解决这个问题. 接口静态 ...
- JDK8新特性之函数式接口
转载自 JDK8新特性之函数式接口 什么是函数式接口 先来看看传统的创建线程是怎么写的 Thread t1 = new Thread(new Runnable() {@Overridepublic v ...
- jdk8新特性(Lambda、Steam、函数式接口)
JDK8新特性 JDK8新特性 Lambda表达式 函数式(Functional)接口 方法引用与构造器引用 方法引用 构造器引用 强大的 StreamAPI 创建Stream方式 Stream 的中 ...
最新文章
- CTO的眼界到底有多宽
- 乔布斯成功的七条秘诀
- 算法--组合数学:杨辉三角数学分析以及Java实现
- sklearn随笔-归一化(标准化)
- pta函数统计素数并求和_关于求和的4种函数公式,此文讲透了,尤其是第4种,绝对的高效...
- android 服务自动结束,Android服务自动停止
- C/C++ 进程的探索(fork函数)
- 状态栏背景颜色(转载)
- 理解WordPress的PingBack和TrackBack
- 如何理解Python装饰器?
- Docker学习总结(17)——学会使用Dockerfile
- linux授权命令chmod777_【HDFS篇02】HDFS命令行操作
- 原生js对数组操作(find,findIndex)
- 矩阵计算器+求线性代数n阶行列式代码
- DDS(Direct Digital Synthesizer)数字频率合成器
- obs源码简析之推流
- 如何拥有一个属于自己的网站
- java excel 加边框_java通过poi来设置表格边框
- php如何实现性格测试,一个很准的性格测试
- 直播小程序推出,解锁2018微信直播新玩法
热门文章
- python列表的内置方法_Python内置方法详解
- java display属性_JavaScript中的style.display属性操作
- matlab中向量norm,【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关
- vue mianjs 引用css_vue 学习记录八——webpack中常见的配置项
- C语言浮点数据在内存中的存储方式
- STM32开启定时器就立即进Update中断问题探索
- python语言的类型是_Python到底是强类型语言,还是弱类型语言?
- linux 基础学,linux基础学习【1】
- npm run build 打包 之后怎么用_npm 组件你应该知道的事
- python如何使用文件_Python的文件操作