用简易例子讲Java中的回调机制

发布时间:2020-05-24 23:01:55 作者:wx5d9ed7c8443c3
来源:网络 阅读:272

用简易例子讲Java中的回调机制

首先说点题外话。为什么要写这篇文章,因为在看J.U.C包的FutureTask源码的时候,有一个done()方法,这是个抽象方法,用户实现它之后,FutureTask会在执行完后调用这个方法。这就是回调机制,回调的思想就是:

给出思想过于抽象,所以我会举出一个简单的实例(虽然简单,但是能说明问题),并总结Java实现回调的步骤。

实例基于知乎上一个解释什么是回调机制的回答。

描述: 一个顾客入住了一个酒店,酒店提供叫醒服务,顾客由于第二天早晨有很重要的事情,所以使用了叫醒服务。让酒店工作人员在第二天早晨7:00叫醒顾客。

在这个例子中,顾客是A类,酒店是B类,顾客预订叫醒服务相当于A调用了B的b方法,酒店叫醒顾客相当于B调用了A的callback方法(被叫醒)。

下面给出代码:

1、首先是回调接口:

package callback;
//回调接口
public interface CallBack {

    public void beWakedUp();
}

2、接着是顾客类
顾客类实现回调接口

package callback;

public class Customer implements CallBack {
    //顾客同时持有酒店类的对象,后面定义
    private Hotel hotel;

    public Customer(Hotel hotel) {
        this.hotel = hotel;
    }

    @Override
    public void beWakedUp() {
        System.out.println("被叫醒了");
    }

    // 客户预约使用酒店的叫醒功能
    public void bookWakeService() {
        hotel.wakeService(this);
    }
    // 省略get set
}

3、酒店类

package callback;

public class Hotel {

    public void wakeService(CallBack callBack) {
        System.out.println("顾客预约了叫醒服务");
        try {
            // 模拟时间过了一晚上
            Thread.sleep(3000);
            System.out.println("时间过去了一夜");
            callBack.beWakedUp();
        } catch (InterruptedException e) {

            e.printStackTrace();
        }
    }
}

4、测试主类

package callback;

public class Main {

    public static void main(String[] args) {
        Hotel hotel = new Hotel();
        Customer customer = new Customer(hotel);
        customer.bookWakeService();
    }
}

输出结果为:

用简易例子讲Java中的回调机制

不知道你对回调机制有没有进一步理解呢?

最后总结一下Java中实现回调机制的大体步骤吧:

推荐阅读:
  1. 类与对象简易例子
  2. Java中的回调机制是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

程序员 后端 互联网

上一篇:jqGrid随浏览器缩放自适应宽度

下一篇:AndroidStudio——导出apk

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》