关于@FunctionalInterface注解

简介: FunctionalInterface

函数式接口:首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。

java 8为函数式接口引入了一个新注解@FunctionalInterface,主要用于编译级错误检查,加上该注解,当你写的接口不符合函数式接口定义的时候,编译器会报错。

image.png

@FunctionalInterface标记在接口上,“函数式接口”是指仅仅只包含一个 抽象方法*的接口。 在编译期间检查。

  • 1、该注解只能标记在"有且仅有一个抽象方法"的接口上。
  • 2、JDK8接口中的静态方法和默认方法,都不算是抽象方法。
  • 3、接口默认继承java.lang.Object,所以如果接口显示声明覆盖了Object中方法,那么 也不算抽象方法。

image.png

注:该注解不是必须的,如果一个接口符合"函数式接口"定义,那么加不加该注解都没有影响。加上该注解能够更好地让编译器进行检查。如果编写的不是函数式接口,但是加上了@FunctionInterface,那么编译器会报错。

使用案例

@FunctionalInterface
public interface Person {
    //抽象方法
    public abstract void  sub();
//    //java.lang.Object中的方法不是抽象方法
//    @Override
//    public boolean equals(Object v1);
//    // default不是抽象方法
//    public default void defaultMethod(){
//        System.out.println("hello");
//    }
//
//    //static不是抽象方法
//    public static void staticMethod(){
//    }
}
public class TestPer {
    public static void main(String[] args) {
        //使用Lambda表达式 实现了sub()方法
        Person person = () ->{
            System.out.println("hello,person");
        };
        //使用匿名内部类 实现sub()方法
        Person person2 = new Person() {
            @Override
            public void sub() {
                System.out.println("hello,person 2");
            }
        };
        person.sub();
        person2.sub();
    }
}
目录
相关文章
|
7月前
|
Java 数据库连接 数据库
什么时候用@MapperScan 注解?
什么时候用@MapperScan 注解?
239 0
|
7月前
|
安全 前端开发 Java
注解的使用
注解的使用
67 0
|
Java 编译器 数据库连接
注解
注解是JAVA5引入JAVA的一个特性,理解起来会有点抽象,这里笔者先给出自己对注解的一个理解——注解就是一张便签! 其次要有一个概念就是注解的应用是基于反射的。 本文举出的三个实例中例1和例3是引用其它的优秀文献 出处为how2J以及 https://blog.csdn.net/briblue/article/details/73824058一文
73 0
|
Java 测试技术 Spring
关于@RunWith注解的一点问题
IDEA写springboot测试关于@Runwith的小问题
255 0
关于@RunWith注解的一点问题
|
存储 JSON Java
一文学会注解的正确使用姿势
一文学会注解的正确使用姿势
一文学会注解的正确使用姿势
|
XML Dubbo Java
duboo注解使用详解
当越来越的的接口与实现类的增加后,duboo的xml配置会越来越多,为了防止几百几千行的代码,减少开发人员配置xml的工作量,使用duboo的注解模式,减少配置多出问题多的可能性!
174 0
duboo注解使用详解
|
Java Maven
扒一扒@Retryable注解,很优雅,有点意思! (5)
扒一扒@Retryable注解,很优雅,有点意思! (5)
274 0
扒一扒@Retryable注解,很优雅,有点意思! (5)
|
Java 程序员 开发工具
扒一扒@Retryable注解,很优雅,有点意思! (1)
扒一扒@Retryable注解,很优雅,有点意思! (1)
381 0
扒一扒@Retryable注解,很优雅,有点意思! (1)
扒一扒@Retryable注解,很优雅,有点意思! (4)
扒一扒@Retryable注解,很优雅,有点意思! (4)
231 0
扒一扒@Retryable注解,很优雅,有点意思! (4)
下一篇
DataWorks