java 介面。Android Interface 自定義介面回撥。
阿新 • • 發佈:2019-02-09
不是很懂java 的Interface 介面的具體怎麼實現的。在網上看了很多例子,終於理解了那麼點啊。
因為原來在學習做一個微信的語音功能要做到一個介面功能。微信的後面有時間會寫出來。
Interface 主要用來描述這類具有什麼功能,而並不能給出每個功能的具體是實現。一個類可以實現多個介面,並在需要介面的地方,隨時使用實現了相應介面的物件。p.s.interface一定是public
下面的例子就是自己寫的一個例子可以嘗試著自己寫一個:
介面回撥的典型例子就是Android的Button監聽事件了,
button.setOnClickListener(new OnClickListerner({
@Override
public void onClick(View v) {
System.out.println("呼叫回撥函式");
}
});
button的點選就是觸發了回撥的物件。
當用戶點選Button的時候,介面函式被回撥。所以可以這樣子理解java callback,當條件成立了,或者是觸發了某個條件,而引起了函式的回撥。這個就是我對Interface介面的理解。
所以我們首先需要寫一個Interface介面叫CallListener,然後寫一個能呼叫該介面函式的類,叫做Call最後寫一個用到Call類物件呼叫監聽的NeedCall類。
介面類:
Call類:public interface CallListener { public void finishCall(); }
public class Call {
CallListener callListener; //定義介面物件
public void setOnCallListener(CallListener listener){ //介面物件構造(介面沒有例項化,因為沒有具體方法)
this.callListener=listener;
}
/*
* 觸發介面的回撥方法,相當於button的點選觸發,在主類方法呼叫該方法觸發回撥
*/
public void onCall(){
callListener.finishCall();
}
}
NeedCall類:
public class NeedCall { public static void main(String[] args) { Call call=new Call(); //Call類的例項化 call.setOnCallListener(new CallListener() { @Override public void finishCall() { System.out.println("對介面方法的重寫,呼叫回撥函式時呼叫該回調函式"); } }); call.onCall(); //真正觸發回撥的方法。 } }
總結一下,要觸發介面就是要構成觸發介面的方法 。就像你要去監聽一個人是否離開房間,就開一個口子傳字條(相當於定義一個介面),再定義一個可以呼叫該介面的方法,最後那個人離開時觸發你的監聽條件。你只需要看著口子就可以,一旦條件觸發,就構成了回調了。