java介面回調和回呼函數,java回調回呼函數

來源:互聯網
上載者:User

java介面回調和回呼函數,java回調回呼函數

開發Android已有兩年了,說來慚愧,回調雖然隨處可見,並且網上關於回呼函數和介面回調的內容很多,可一直沒弄明白,總結不明白的原因如下:

1、java的介面定義以及向上轉型是理解回調的基礎;

      使用介面的核心原因:為了能夠向上轉型為多個基底類型。即利用介面的多實現,可向上轉型為多個介面基底類型。

2、匿名類。

      代碼隨處可見new SthInterface()註冊介面回調。


感謝csdn兩篇文章讓我徹底理解回呼函數:

1、http://blog.csdn.net/hack_bug/article/details/7625646;

2、http://blog.csdn.net/pi9nc/article/details/23169357。


其實我很願意理解網上那個關於打電話需求協助的回呼函數例子

在此我也寫了一個與此類似的例子:

1、首先定義一個介面(即回調介面)(協助介面,可以向張三需求協助,也可以向李四需求協助,具體需要什麼協助,後期綁定自己實現。)

 

public interface HelperInterface {void execute();}

2、我們可以讓張三協助我們解決問題(當然找李四或者王五等)

 

public class HelperZhangsan implements HelperInterface{@Overridepublic void execute() {System.out.println("This is zhangsan_helper.You can also ask lisi_helper!!");}}

3、尋求協助的類,他必須持有協助的回調介面,因為找不到張三,可以找李四,只要回調介面不變,總可以找到協助的類。

public class Ask {private HelperInterface helperInterface;public void setHelperInterface(HelperInterface helperInterface){  //註冊this.helperInterface = helperInterface;}public void resultForAsk(){helperInterface.execute();}}

4、測試代碼類

public class Test {public static void main(String[] args) {Ask ask = new Ask();ask.setHelperInterface(new HelperZhangsan());ask.resultForAsk();}}

其實很多時候我們更願意如下這種寫法,也即找個匿名介面實作類別協助我們():


public class Test {public static void main(String[] args) {Ask ask = new Ask();ask.setHelperInterface(new HelperInterface() {@Overridepublic void execute() {System.out.println("hell dsc");}});ask.resultForAsk();}}

以上就是完整的回呼函數的工作機制。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.