java接口回调

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、回调的含义和用途 1. 什么是回调? 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类:同...
    Coder_Y阅读 1,790评论 0 5
  • 文章出自http://www.sohu.com/a/125632583_445013二、回调的含义和用途1、什么是...
    安安静静写代码阅读 412评论 0 2
  • 百度百科定义: 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数地址给另一个函数,当这个...
    ElephantChan阅读 795评论 0 0
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,267评论 4 16
  • 从没想过会认识你,也许这只是一场美丽的意外…… 不知道从哪天开始默默的喜欢上了你,原来喜欢一个人的感觉是如此幸福如...
    默默的等爱归来阅读 205评论 0 0