美文网首页
java回调机制

java回调机制

作者: 24K纯帅豆 | 来源:发表于2016-07-06 13:30 被阅读103次

    讲个简单的例子,当A让B帮忙做某件事的时候,恰巧B在忙于另外一件事,这时候B对A说你先做你自己的事,等我把手头上的事做完我再找你,然后再帮你做,那B做完去找A的这个动作就可以称为回调。下面进入demo:

    1、首先定义一个接口,在这我叫做MyCallBack

    public interface MyCallBack {
        void save(String result);
    }
    

    2、然后定义两个类A和B,分别表示A和B两个人,A类:

    public class A implements MyCallBack {
        private B b;
        public A(B b) {
            this.b = b;
        }
        /**
        * A通过这个方法向B提问
        */
        public void askQuestion(final String question) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    b.executeMessage(A.this, question);
                    System.out.println("第二步:A去做自己的事去了,等B好了再通知A");
                }
            }).start();
        }
    
        @Override
        public void save(String result) {
            System.out.println("第五步:B通知A他做完了事,可以帮A做事情了" + result);
        }
    }
    

    B类:

    public class B {
        /**
         * 相当于B类有参数为CallBack callBack的f()---->背景三
         * 
         * @param callBack 回调接口
         * @param question A让B做的事
         */
        public void executeMessage(final CallBack callBack, String question) {
            System.out.println(question);
            // 模拟B办自己的事情需要很长时间
            new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("第三步:B去做自己的事了");
                    try {
                        Thread.sleep(10000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("第四步:B做完自己的事了");
                    /**
                     * B办完自己的事情之后立刻通知A他现在有空了
                     */
                    String result = "";
                    /**
                     * 于是就告诉A,调用A中的方法 这就相当于B类反过来调用A类的方法D
                     */
                    callBack.save(result);
                }
            }).start();
        }
    }
    

    3、在写一个测试类,来测试这个接口:Test类

    public class Test {
        public static void main(String[] args) {
            /**
             * new 一个B
             */
            B b = new B();
            /**
             * new 一个A
             */
            A a = new A(b);
            /**
             * A让B帮忙做事
             */
            a.askQuestion("第一步:A让B帮忙!!!!");
    }
    

    4、运行结果:

    运行结果

    好了,最简单的回调就到这里了

    公众号:Android技术经验分享

    相关文章

      网友评论

          本文标题:java回调机制

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