JAVA 使用Interface 實現自己的事件監聽
阿新 • • 發佈:2019-02-07
上班沒什麼事做,看了一下同事的程式碼。覺得挺有意思,於是拿出來分享一下,當然這不是什麼很難得技術,很多人都能夠呀看得懂。所以這一次也是很輕鬆的學習。
對於介面,我們使用最多的莫過於在設定控制元件的點選事件中了,例如:
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
這裡View是控制元件的例項物件。
那麼這裡有幾個部分,第一個是一個setOnClickListener(OnClickListener listener)方法,裡面傳入的是一個介面。下面是一個抽象方法onClick(View v)。好了,先分析到這裡。
接下來,我將通過使用一個計算的形式來提現這個效果。開始編寫我們自己的事件監聽。首先寫一個介面,程式碼如下:
public interface FirstInter {
void success(int a);
void fail(Exception error);
}
這裡還是比較簡單,兩個抽象方法,分別是success(int a)和fail(Exception error),
然後我們開始寫計算的工具類,程式碼如下:
public class DayUtil {
public void jisuan(int a, int b) {
try {
if (firstInter != null) {
firstInter.success(a / b);
System.out.println("a:" + a + " b:" + b);
}
} catch (Exception e) {
firstInter.fail(e);
}
}
private FirstInter firstInter;
public void isSucces(FirstInter firstInter) {
this .firstInter = firstInter;
}
}
首先是定義了一個isSucces()方法,用於給介面賦值,然後通過呼叫jisuan()這個方法,進行計算,當計算成功的時候,回撥success()的方法,然後如果出現異常,則呼叫fail()方法。
好了,那看到我們怎麼使用他的。程式碼貼下;
public class Main {
public static void main(String[] args) {
DayUtil dayUtil = new DayUtil();
dayUtil.isSucces(new FirstInter() {
@Override
public void success(int a) {
System.out.println("計算結果為:"+a);
}
@Override
public void fail(Exception error) {
error.printStackTrace();
}
});
dayUtil.jisuan(10, 0);
}
}
好了,自此全部結束,謝謝閱讀