美文网首页
java中的回调(callback)机制简述(转)

java中的回调(callback)机制简述(转)

作者: 小小的Jobs | 来源:发表于2018-10-16 16:14 被阅读0次

    转载自CNDS的cgwang_1580  https://blog.csdn.net/cgwang_1580/article/details/79592244

    在java中,回调用的十分频繁;Android开发中,回调往往出现在相机的预览、采图中,这里我们来简单地说明一下回调的实现原理;

    回调,顾名思义就是在调用之后返回调用。java回调方法简单的说就是:假设有两个类class A和class B,在B中调用A类的一个方法a1,而a1在执行时又调用了B类中的方法b1,则b1就称为回调函数。

    java中,回调的实现一般与接口联系在一起一般有如下套路:

        首先,定义一个接口”interface in”,其中有方法inFun;

        然后,定义类”class B implements in”,并实现接口in中的方法inFun,且有方法funB;

        接着,定义类”class A”,其中有方法funA,且funA的形参中有一个为接口in类型,该方法被B的方法funB调用,并在该方法中调用方法inFun,由于方法inFun在类B中实现,所以inFun即可以称为类B的回调函数;

        最后,由主函数来调用类B中的方法funB,即可以实现回调。

    以下为一个实例,新建一个Java项目:

    1、定义接口:

    public interface DoJob {   

        void fillBlank(int a, int b, int result);

    }

    其中,接口中有方法fillBlank,对应上述中的inFun;

    2、定义类B

    public class Student implements DoJob{

        private String name = null;

        public void setName(String theName) {

            name = theName;

        }

        public void callHelp(int a, int b, Student stu) {

            new Calculator().add(a, b, stu);

        }

        public void fillBlank(int a, int b, int result) {

            System.out.println(name + " please for help, " + "the result is " + a + "+" + b + "=" + result);

        }

    }

    其中,方法callHelp对应上述讲解中的funB,fillBlank为实现接口中的方法;

    3、定义类A

    public class Calculator {

        private String name = null;

        public void setName(String theName){   

            name = theName;

        }

        public void add(int a, int b, DoJob job ){ 

            int result = a + b;

            job.fillBlank(a, b, result);

        }

    }

    其中,方法add即对应上述中的funA,在该方法中调用接口方法inFun,即fillBlank;

    4、在主方法中实现回调

    public class CallbackTest {

        public static void main(String[] args){   

            Student xiaoMing = new Student(); 

            xiaoMing.setName("Xiao Ming");

            Calculator xiaoHong = new Calculator();

            xiaoHong.setName("Xiao Hong");

            int cal1 = 123;

            int cal2 = 1123;

            xiaoMing.callHelp(cal1, cal2, xiaoMing);

        } 

    }

    其中,方法的调用顺序为:callHelp → add → fillBlank(回调函数),从而实现java回调

    ---------------------

    作者:cgwang_1580

    来源:CSDN

    原文:https://blog.csdn.net/cgwang_1580/article/details/79592244?utm_source=copy

    相关文章

      网友评论

          本文标题:java中的回调(callback)机制简述(转)

          本文链接:https://www.haomeiwen.com/subject/shmhzftx.html