基本回調 我前面寫過OBJC的回調寫法,以及JS中也經常用到回調寫法?,F在來看看java中的回調寫法。
不論是OBJC,JS還是Java,他們的回調都是類似的。 重點在于把A函數傳入B函數當中,然后在B函數當中調用A函數。
既然如此,那么我們需要兩個東西: 1)A函數; 2)B函數; 我們定義ClassA類,類中包含A函數:
public class ClassA{ public void funcA(){ System.out.定義好了A函數,我們來定義B函數:public class ClassB{ public void funcB(){ System.out.println("info: 這是B類的funcB函數"); }}定義好了兩個函數,我們來將A函數傳入B函數。 定義一個類,包含主方法。
public class ClassMain{ public static void main(String[] args){ // 調用B函數中的方法,將A的實例傳入。 new ClassB().funcB(new ClassA);// 我們看到這里把A實例作為了參數,所以我們的funcB函數應該需要一個形式參數。 }}funcB函數應該寫成:
public class ClassB{ public void funcB(ClassA classA){ System.out.println("info: 這是B類的funcB函數"); }}這樣我們就把funcA包含在實例classA中傳入了funcB函數?,F在我們只需要在funcB中調用funcA函數即可。
public class ClassB{ public void funcB(ClassA classA){ System.out.println("info: 這是B類的funcB函數"); classA.funcA(); }}控制臺輸出:
info:這是B類的funcB函數info:這里A類的funcA函數上溯造型 熟悉父類子類,接口與實現的朋友對上溯造型應該不陌生。那么基于上溯造型,的回調怎么寫呢? 1)定義一個接口; 2)定義接口的實現類; 3)將實現類傳入另一個函數當中; 3)另一個函數調用這個實現類的方法; 1 定義一個接口
public inteface MyInterface{ void func1();}2 定義接口的實現類
public class ImplClass implements MyInterface{ @Override void func1(){ System.out.println("info: 具體實現內容") }}3 將實現類傳入另外一個函數
public class MyMainClass{ public static void main(String[] args){ new MyMainClass().func2(new ImplClass()); } void func2(MyInterface callback){ System.out.prinln("info: 這是第一條輸出"); callback.func1(); // 4 調用實現類的方法 }}以上就是上溯造型的回調 不過其實還有一種比較簡略一點的寫法,就是省去實現類,用匿名實現類。
public class MyMainClass{ public static void main(String[] args){ new MyMainClass().func2(new MyInterface(){ @Override void func1(){ System.out.prinln("info: 這是匿名的方式"); } }); } void func2(MyInterface callback){ System.out.prinln("info: 這是第一條輸出"); callback.func1(); // 4 調用實現類的方法 }}注:以上代碼臨時寫的,沒調試過,如有些許問題,請諒解。
新聞熱點
疑難解答