欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java編程接口回調(diào)一般用法代碼解析

 更新時間:2017年09月14日 15:42:38   投稿:mengwei  
本文的主要內(nèi)容是同過實際代碼向大家展示Java編程中接口回調(diào)的一般用法,具有一定參考價值,需要的朋友可以了解下

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

Java接口回調(diào)一般用法:實現(xiàn)接口實際上和繼承抽象類類似,只不過繼承是在類的層面上操作,接口是在方法和常量集合的層面上操作,接口比抽象類更抽象、更簡潔??梢园褜崿F(xiàn)接口看成繼承特定的一個或多個方法以及一些常量,關(guān)于接口的具體規(guī)則這里不贅述。

為什么要使用接口和抽象類?因為從很多角度講,這樣做符合面向?qū)ο蟮脑O(shè)計思想,比如開閉原則等。

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

接口的一大作用是實現(xiàn)回調(diào),回調(diào)分同步回調(diào)和異步回調(diào),區(qū)別是異步回調(diào)使用了多線程技術(shù),當回調(diào)中有耗時操作時,就需要使用異步回調(diào)。

以下全部以異步回調(diào)為例。以下以java寫法為例,android同理。

1、一般用法

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

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

下面新建發(fā)起回調(diào)的類InterfaceTest

public class InterfaceTest {
  //注意這里Main實例向上轉(zhuǎn)型,接口變量引用了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();
        }
        //回調(diào)接口方法
        example.sendMessage("接口傳的參數(shù)");
      }
    }).start();
  }
}

最后運行輸出:

------接口使用測試--------
------異步回調(diào)測試--------
-----做一些事------
接口回調(diào)成功,利用 接口傳的參數(shù) 做一些事

其中異步的處理也可以在Main中調(diào)用handleThings時進行。

2、結(jié)合匿名內(nèi)部類實現(xiàn)接口回調(diào)

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

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

可以看到,采用匿名內(nèi)部類的方式可以簡化代碼,使程序結(jié)構(gòu)更清晰。所以這種用法很常見,比如android系統(tǒng)提供的view的點擊事件就是采用這種形式進行回調(diào)。

輸出是一樣的:

------接口使用測試--------
------異步回調(diào)測試--------
-----做一些事------
接口回調(diào)成功,利用 接口傳的參數(shù) 做一些事。

        本文關(guān)于Java編程接口回調(diào)一般用法的介紹就到這里,希望對大家有所幫助。

相關(guān)文章

  • springboot使用Validator校驗方式

    springboot使用Validator校驗方式

    這篇文章主要介紹了springboot使用Validator校驗方式,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Java中的ThreadLocal源碼及弱引用解析

    Java中的ThreadLocal源碼及弱引用解析

    這篇文章主要介紹了Java中的ThreadLocal源碼及弱引用解析,ThreadLocal類通過ThreadLocal可以實現(xiàn)全局變量在多線程環(huán)境下的線程隔離,每個線程都可以獨立地訪問和修改自己的全局變量副本,不會影響其他線程的副本,需要的朋友可以參考下
    2024-01-01
  • Java匿名類,匿名內(nèi)部類實例分析

    Java匿名類,匿名內(nèi)部類實例分析

    這篇文章主要介紹了Java匿名類,匿名內(nèi)部類,結(jié)合實例形式分析了Java匿名類,匿名內(nèi)部類相關(guān)原理、用法及操作注意事項,需要的朋友可以參考下
    2020-04-04
  • springbootAOP定義切點獲取/修改請求參數(shù)方式

    springbootAOP定義切點獲取/修改請求參數(shù)方式

    這篇文章主要介紹了springbootAOP定義切點獲取/修改請求參數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 關(guān)于mybatis的一級緩存和二級緩存的那些事兒

    關(guān)于mybatis的一級緩存和二級緩存的那些事兒

    MyBatis自帶的緩存有一級緩存和二級緩存,今天我們就來學習一下,文中有非常詳細的總結(jié),對正在學習的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • 實例講解Java中random.nextInt()與Math.random()的基礎(chǔ)用法

    實例講解Java中random.nextInt()與Math.random()的基礎(chǔ)用法

    今天小編就為大家分享一篇關(guān)于實例講解Java中random.nextInt()與Math.random()的基礎(chǔ)用法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Java基礎(chǔ)第五篇 實施接口

    Java基礎(chǔ)第五篇 實施接口

    在public和private的封裝機制,我們實際上同時定義了類和接口,類和接口混合在一起。Java還提供了interface這一語法。這一語法將接口從類的具體定義中剝離出來,構(gòu)成一個獨立的主體,下面文章內(nèi)容將為大家做詳細介紹
    2021-09-09
  • Jackson序列化丟失泛型的解決

    Jackson序列化丟失泛型的解決

    這篇文章主要介紹了Jackson序列化丟失泛型的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java后端把數(shù)據(jù)轉(zhuǎn)換為樹,map遞歸生成json樹,返回給前端(后臺轉(zhuǎn)換)

    java后端把數(shù)據(jù)轉(zhuǎn)換為樹,map遞歸生成json樹,返回給前端(后臺轉(zhuǎn)換)

    這篇文章主要介紹了java后端把數(shù)據(jù)轉(zhuǎn)換為樹,map遞歸生成json樹,返回給前端實例(后臺轉(zhuǎn)換),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-01-01
  • new出來的對象中無法使用@autowired進行對象bean注入問題

    new出來的對象中無法使用@autowired進行對象bean注入問題

    這篇文章主要介紹了基于new出來的對象中無法使用@autowired進行對象bean注入問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02

最新評論