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註解。
相關文章
相關標籤/搜索