Functional接口简介

Functional接口简介

  • 什么是Functional接口?

    包含有单一抽象方法(Single Abstract Method)的接口就是Functional接口。简单来讲,就是有且只有一个非default方法的接口。为何default方法不被计算进去呢?缘由也很简单,由于default方法是已经有了一个实现了啊,因此并非抽象的。多线程

  • 全部Functional接口都建议打上@FunctionalInterface注解。
    这样作有两个好处:异步

    1. 明确地代表了这个接口做用,告诉调用方,“我”能够做为lambda表达式使用。
    2. 借助编译器来提早暴露错误。好比,你本来想写一个Functional接口以即可以在lambda表达式中使用,但实际上这个接口却包含了一个以上的非default方法,这时编译器就会提示你,“小伙,你确定弄错了什么,这不是Functional接口啊”。
  • 现实世界中的例子线程

    多线程中用于执行无返回结果的Runnable接口,只有一个run方法,很“简单”的嘛!code

    @FunctionalInterface
     public interface Runnable {
         public abstract void run();
     }
  • 使用示例接口

    在主线程外异步地执行任务(使用lambda表达式):编译器

    public static void main(String[] args) {
       new Thread(() -> System.out.println("Hello 彬哥!")).start();
     }

    一行代码仍是作了很多事情的嘛:io

    1. 建立了一个异步任务Runnable。纳尼?哪里?没错, 就是() -> System.out.println("Hello 彬哥!"),这是一个lambda表达式。
    2. 使用上面建立的任务,来构造了一个新的线程,new Thread()
    3. 启动了这个线程,start()
  • 小结
    只有一个抽象方法的接口是Functional接口,要打上@FunctionalInterface注解。
相关文章
相关标签/搜索