基本回调 我前面写过OBJC的回调写法,以及JS中也经常用到回调写法。现在来看看java中的回调写法。
不论是OBJC,JS还是Java,他们的回调都是类似的。 重点在于把A函数传入B函数当中,然后在B函数当中调用A函数。
既然如此,那么我们需要两个东西: 1)A函数; 2)B函数; 我们定义ClassA类,类中包含A函数:
public class ClassA{ public void funcA(){ System.out.PRintln("info: 这是A类的funcA函数"); }}定义好了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函数。现在我们只需要在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 调用实现类的方法 }}注:以上代码临时写的,没调试过,如有些许问题,请谅解。
新闻热点
疑难解答