@FunctionalInterface注解的使用

被@FunctionalInterface注解标记的类型代表这是一个函数接口。从概念上讲,函数接口只有一个抽象方法。若是接口声明的抽象方法覆写Object类的公共方法,那这方法不算做接口的抽象方法,由于接口具备Object方法的默认实现。html

先看Java SE 8中@FunctionalInterface注解是如何声明的:java

package java.lang;

import java.lang.annotation.*;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface FunctionalInterface {}

由Java源代码声明咱们了解到:@FunctionalInterface注解,只能用于类。其实,它的应用范围更小,只能应用于接口类型。spring

咱们可使用lambda表达式,方法引用或构造函数引用建立功能接口的实例。函数

若是一个类型被此标记的话,若是不是如下状况,编译器会报错:spa

  1. 此类型是接口类型而且不是注解类型、枚举或类
  2. 标记的类型知足函数接口的要求

可是,不管接口声明中是否标记了@FunctionalInterface注解,编译器都会将知足函数接口定义的任何接口视为函数接口。code

像个人“函数接口(Functional Interfaces)”这篇博文中声明的函数接口,均可以使用此注解进行显式标记,告诉用户此接口是函数接口。htm

下节继续

    下节将给你们讲解最后一个Java SE预约义注解@Deprecated的使用blog

相关文章
相关标签/搜索