java的介面回調,在android下用的是越來越多了,到底該怎麼理解他呢?
好比是一個領導和一個下屬,還有一個下屬間諜三個人之間不清不楚的關係
1、下屬有一個吃飯的事情……
(定義介面)
2、領導發表申明,說對下屬的吃飯這件事感興趣,並說了如果下屬吃飯,他就怎麼樣怎麼樣,但是老闆就是老闆,總不能一直盯著下屬所以……
(實現介面,並實現處理監聽事件的方法)
3、領導一說話,間諜就去了下屬那,並且領導給了間諜特權,可以使用我的怎麼樣怎麼樣方法
(建立於介面的串連,實際上是一個向上轉型的過程,把間諜upcase為一個領導,從而調用領導的方法)
4、,然後只要一吃飯,間諜就通知領導,並替領導完成什麼樣什麼樣的事情
(通過介面的執行個體,調用介面中的方法)
這樣一說,大家應該對介面回調的機制有了點感性的理解了吧。
interface People{ void peopleList(); } class Student implements People{ public void peopleList(){ System.out.println("I’m a student."); } } class Teacher implements People{ public void peopleList(){ System.out.println("I’m a teacher."); } } public class Example{ public static void main(String args[]){ People a; //聲明介面變數 a=new Student(); //執行個體化,介面變數中存放對象的引用 a.peopleList(); //介面回調 a=new Teacher(); //執行個體化,介面變數中存放對象的引用 a.peopleList(); //介面回調 } }
通過介面,我們將大量共通但實現細節不同的方法抽象出來,再去實現它的介面類中具體處理,這樣通過介面去調用方法的時候,就不用考慮具體調用哪個方法了。
這是一種用法,大致是多態的意思,還有一種用法就是組件中的通訊:
例如Fragment間的通訊
1、在Fragment中定義介面,申明介面的執行個體,在onAttach()方法中實現介面執行個體化為Activity對象
2、在Fragment中的某個方法內,使用介面的執行個體,調用Activity的方法,向Activity通訊
3、Activity實現介面與結構內的方法,實現處理回調的邏輯