91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java項目中進行接口回調方法有哪些

發布時間:2020-12-04 17:38:06 來源:億速云 閱讀:153 作者:Leah 欄目:編程語言

Java項目中進行接口回調方法有哪些?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

接口回調是指:可以把使用某一接口的類創建的對象的引用賦給該接口聲明的接口變量,那么該接口變量就可以調用被類實現的接口的方法。實際上,當接口變量調用被類實現的接口中的方法時,就是通知相應的對象調用接口的方法,這一過程稱為對象功能的接口回調。

Java接口回調一般用法:實現接口實際上和繼承抽象類類似,只不過繼承是在類的層面上操作,接口是在方法和常量集合的層面上操作,接口比抽象類更抽象、更簡潔。可以把實現接口看成繼承特定的一個或多個方法以及一些常量,關于接口的具體規則這里不贅述。

為什么要使用接口和抽象類?因為從很多角度講,這樣做符合面向對象的設計思想,比如開閉原則等。

從實際開發的角度講,Java不支持多繼承,為了彌補這一點,接口的存在就極為重要,和繼承不同,一個類可以實現多個接口。

接口的一大作用是實現回調,回調分同步回調和異步回調,區別是異步回調使用了多線程技術,當回調中有耗時操作時,就需要使用異步回調。

以下全部以異步回調為例。以下以java寫法為例,android同理。

1、一般用法

新建入口類 Main,并新建接口 InterfaceExample

public class Main implements InterfaceExample{
  public static void main(String[] args) {
    System.out.println("------接口使用測試--------");
    InterfaceTest test = new InterfaceTest();
    //調用InterfaceTest的handleThings方法,并傳遞Main的實例
    test.handleThings(new Main());
    System.out.println("------異步回調測試--------");
  }
  @Override  //重寫接口方法
  public void sendMessage(String string) {
    System.out.println("接口回調成功,利用 " + string + " 做一些事");
  }
}
 
//接口也可以寫在一個獨立的.java文件里
interface InterfaceExample {
  void sendMessage(String string);
}

下面新建發起回調的類InterfaceTest

public class InterfaceTest {
  //注意這里Main實例向上轉型,接口變量引用了Main實例
  public void handleThings(InterfaceExample example) {
    new Thread(new Runnable() {
      @Override
      public void run() {
        System.out.println("-----做一些事------");
        try {
          Thread.sleep(3000);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
        //回調接口方法
        example.sendMessage("接口傳的參數");
      }
    }).start();
  }
}

最后運行輸出:

------接口使用測試--------
------異步回調測試--------
-----做一些事------
接口回調成功,利用 接口傳的參數 做一些事

其中異步的處理也可以在Main中調用handleThings時進行。

2、結合匿名內部類實現接口回調

第二種方法只需要在第一種的基礎上修改Main類就可以

public class Main {
  public static void main(String[] args) {
    System.out.println("------接口使用測試--------");
    InterfaceTest test = new InterfaceTest();
    //調用InterfaceTest的handleThings方法,并使用實現了InterfaceExample接口的匿名內部類
    //在該匿名內部類中重寫接口方法
    test.handleThings(new InterfaceExample() {
      @Override  //重寫接口方法
      public void sendMessage(String string) {
        System.out.println("接口回調成功,利用 " + string + " 做一些事");
      }
    });
    System.out.println("------異步回調測試--------");
  }
}
interface InterfaceExample {
  void sendMessage(String string);
}

可以看到,采用匿名內部類的方式可以簡化代碼,使程序結構更清晰。所以這種用法很常見,比如android系統提供的view的點擊事件就是采用這種形式進行回調。

輸出是一樣的:

------接口使用測試--------
------異步回調測試--------
-----做一些事------
接口回調成功,利用 接口傳的參數 做一些事。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辉南县| 邯郸县| 汶上县| 柞水县| 阿克苏市| 连平县| 乌兰浩特市| 平安县| 禹州市| 教育| 瑞金市| 武威市| 阳原县| 海丰县| 营山县| 鹿泉市| 广德县| 邵东县| 衡南县| 泌阳县| 涟源市| 许昌县| 怀宁县| 永定县| 卓尼县| 崇阳县| 都昌县| 苏尼特右旗| 裕民县| 淮阳县| 滦南县| 安陆市| 津南区| 湖南省| 正定县| 黄山市| 和静县| 阜平县| 正阳县| 江达县| 尼勒克县|