美文网首页
java接口回调

java接口回调

作者: 瀚海星云plus | 来源:发表于2018-07-16 13:43 被阅读0次

    java的接口回调原理网上已经有很多生动形象的例子说明了,在此总结一下个人的理解:类A调用类B的方法b(),类B再回调类A的方法a(),其中方法a()是定义在接口中的,由类A来实现。这是一个双向调用的过程,用下面的类图来加以说明。

    Callback.png

    1. 创建一个接口:

    public interface CallBack{
        public void finish(String result);
    }
    

    接口定义了一个回调方法finish(),由类Manager实现,供类Employee回调。

    2. 创建Manager类实现上面的接口

    public class Manager implements CallBack{
        
        private Employee employee;
        
        public Manager(Employee employee){
            this.employee = employee;
        }
        
        public void assign(){
            System.out.println("to finish this work");
            employee.get(Manager.this);
        }
        
        public void finish(String result){
            System.out.println("well done..." + result);
        }
    }
    

    Manager类是依赖Employee类的,它需要调用Employee类的get()方法,因此在Manager构造方法中将Employee对象作为参数传进来。之后在assign()方法中去调用employee的get()方法。最后记得要实现接口的回调方法finish();

    3. 创建Employee类:

    public class Employee{
        
        public void get(CallBack callback){
            
            new Thread(new Runnable(){
            public void run(){
                System.out.println("so easy!");
                callback.finish("finish!");
            }
        }).start();
            
        }
    }
    

    get()方法参数是接口,使用的时候直接传入Manager.this就可以了。在方法体中单独开启了一个线程,用来执行一些耗时的操作,这里只是简单的执行回调方法finish();

    4. 最后编写一个类来测试一下

    public class Main{
        public static void main(String[] args){
            
            Employee employee = new Employee();
            Manager manager = new Manager(employee);
            
            manager.assign();
        }
    }
    

    在控制台中输出如下:


    output.png

    相关文章

      网友评论

          本文标题:java接口回调

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