最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

為什么要使用接口和抽象類?因?yàn)閺暮芏嘟嵌戎v,這樣做符合面向?qū)ο蟮脑O(shè)計(jì)思想,比如開閉原則等。

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

接口的一大作用是實(shí)現(xiàn)回調(diào),回調(diào)分同步回調(diào)和異步回調(diào),區(qū)別是異步回調(diào)使用了多線程技術(shù),當(dāng)回調(diào)中有耗時(shí)操作時(shí),就需要使用異步回調(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的實(shí)例
    test.handleThings(new Main());
    System.out.println("------異步回調(diào)測試--------");
  }
  @Override  //重寫接口方法
  public void sendMessage(String string) {
    System.out.println("接口回調(diào)成功,利用 " + string + " 做一些事");
  }
}
 
//接口也可以寫在一個(gè)獨(dú)立的.java文件里
interface InterfaceExample {
  void sendMessage(String string);
}

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

public class InterfaceTest {
  //注意這里Main實(shí)例向上轉(zhuǎn)型,接口變量引用了Main實(shí)例
  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();
  }
}

最后運(yùn)行輸出:

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

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

2、結(jié)合匿名內(nèi)部類實(shí)現(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方法,并使用實(shí)現(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ǎn)擊事件就是采用這種形式進(jìn)行回調(diào)。

輸出是一樣的:

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

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

相關(guān)文章

  • Java中常見的XML解析方法與應(yīng)用詳解

    Java中常見的XML解析方法與應(yīng)用詳解

    XML(eXtensible Markup Language)是一種用于存儲(chǔ)和傳輸數(shù)據(jù)的標(biāo)記語言,被廣泛應(yīng)用于表示和交換獨(dú)立于應(yīng)用程序和硬件平臺(tái)的結(jié)構(gòu)化信息,下面我們就來看看它的常見解析方法有哪些吧
    2024-01-01
  • 基于Spring AOP的Log收集匯總

    基于Spring AOP的Log收集匯總

    張三針對(duì)公司現(xiàn)有日志處理系統(tǒng)的不足,采用了SpringAOP技術(shù)和Redis存儲(chǔ),設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)性能更高效的日志處理系統(tǒng),該系統(tǒng)通過SpringAOP的切面攔截功能,捕獲方法調(diào)用信息作為日志內(nèi)容,并將其統(tǒng)一格式化后存儲(chǔ)到Redis中
    2024-10-10
  • Java Swing編寫一個(gè)簡單的計(jì)算器軟件

    Java Swing編寫一個(gè)簡單的計(jì)算器軟件

    大家好,本篇文章主要講的是Java Swing編寫一個(gè)簡單的計(jì)算器軟件,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 如何基于http代理解決Java固定ip問題

    如何基于http代理解決Java固定ip問題

    這篇文章主要介紹了如何基于http代理解決Java固定ip問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringData JPA 如何搭建 xml的配置方式

    SpringData JPA 如何搭建 xml的配置方式

    這篇文章主要介紹了SpringData JPA 如何搭建 xml的配置方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • 如何修改JSON字符串中的敏感信息

    如何修改JSON字符串中的敏感信息

    這篇文章主要介紹了如何修改JSON字符串中的敏感信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot中實(shí)現(xiàn)接收文件和對(duì)象

    SpringBoot中實(shí)現(xiàn)接收文件和對(duì)象

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)接收文件和對(duì)象,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • JNDI簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    JNDI簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了JNDI簡介,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Spring 開發(fā)之組件賦值的實(shí)現(xiàn)方法

    Spring 開發(fā)之組件賦值的實(shí)現(xiàn)方法

    這篇文章主要介紹了Spring 開發(fā)之組件賦值的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 微信企業(yè)號(hào)驗(yàn)證/發(fā)送/接收消息

    微信企業(yè)號(hào)驗(yàn)證/發(fā)送/接收消息

    這篇文章主要介紹了微信企業(yè)號(hào)驗(yàn)證/發(fā)送/接收消息的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10

最新評(píng)論

华坪县| 永福县| 合肥市| 响水县| 深水埗区| 景洪市| 济源市| 夹江县| 屯门区| 喀喇沁旗| 萍乡市| 靖远县| 盱眙县| 沛县| 资源县| 娱乐| 澳门| 瓦房店市| 茶陵县| 即墨市| 旌德县| 余姚市| 蛟河市| 读书| 尼勒克县| 奉贤区| 临猗县| 府谷县| 桃江县| 龙江县| 新晃| 大邑县| 厦门市| 静海县| 曲水县| 远安县| 博野县| 井研县| 故城县| 连州市| 南和县|