網上看了不少接口回調的解釋,感覺每個人的解釋都不一樣,有的人覺得好理解的,換個人可能就覺得不知所雲。所以記錄一下我自己的理解:
背景:A類想調用B類里的方法c來做某些事情,然后希望這件事情做完之后能調用A類的方法d返回給A類一個數據並讓A類根據返回數據決定干什么事;
思路:A類調用B類方法,只需要持有一個B類對象的引用即可;如果希望方法c執行完成以后返回給A類數據,則需要在方法c最后去調用方法d,所以方法c里必須傳入一個A類對象的引用;
流程:A類獲得一個B類對象引用b
B b = new B();
調用B類的c方法並傳入一個A類的對象的引用a
b.c(new A());
//或者
A a = new A();
b.c(a);
c方法執行完畢調用A類的d方法;
public void c(A a){
...
... a.d(); }
引申:如果是別的類也需要調用B類的c方法並想要獲得返回值該怎么處理?如果還是按照這樣來,那么在向c方法傳值的時候就要修改類型,並且要修改最后的d方法;為了方便,這里定義一個接口E,借口E里有一個方法d;
interface E{ void d(); }
這樣一來,只要實現了這個接口就一定有d方法,而且實現了這個接口的類就是這個接口的子類,向c方法里傳入對象的類型問題也解決了;
public void c(E e){ ... }
暫時的理解就這樣,以后有新的體會了再加。