文档章节

java接口回调和回调函数

vshcxl
 vshcxl
发布于 2016/04/22 17:45
字数 417
阅读 124
收藏 13

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

1、java的接口定义以及向上转型是理解回调的基础;

使用接口的核心原因:为了能够向上转型为多个基类型。即利用接口的多实现,可向上转型为多个接口基类型。

2、匿名类。

代码随处可见new SthInterface()注册接口回调。

 

感谢csdn两篇文章让我彻底理解回调函数:

 

 

其实我很愿意理解网上那个关于打电话需求帮助的回调函数例子

在此我也写了一个与此类似的例子:

1、首先定义一个接口(即回调接口)(帮助接口,可以向张三需求帮助,也可以向李四需求帮助,具体需要什么帮助,后期绑定自己实现。)

public interface HelperInterface {
    void execute();
}

2、我们可以让张三帮助我们解决问题(当然找李四或者王五等)

public class HelperZhangsan implements HelperInterface{
 
    @Override
    public void execute() {
        System.out.println(This is zhangsan_helper.You can also ask lisi_helper!!);
    }
}

3、寻求帮助的类,他必须持有帮助的回调接口,因为找不到张三,可以找李四,只要回调接口不变,总可以找到帮助的类。

public class Ask {
    private HelperInterface helperInterface;
     
    public void setHelperInterface(HelperInterface helperInterface){  //注册
        this.helperInterface = helperInterface;
    }
     
    public void resultForAsk(){
        helperInterface.execute();
    }
}

4、测试代码类

public class Test {
    public static void main(String[] args) {
        Ask ask = new Ask();
        ask.setHelperInterface(new HelperZhangsan());
        ask.resultForAsk();
    }
}

其实很多时候我们更愿意如下这种写法,也即找个匿名接口实现类帮助我们():

public class Test {
    public static void main(String[] args) {
        Ask ask = new Ask();
        ask.setHelperInterface(new HelperInterface() {
             
            @Override
            public void execute() {
                System.out.println(hell dsc);
            }
        });
        ask.resultForAsk();
    }
}

以上就是完整的回调函数的工作机制。

本文转载自:http://www.2cto.com/kf/201503/385522.html

vshcxl
粉丝 27
博文 282
码字总数 34755
作品 0
浦东
高级程序员
私信 提问
回调函数,就是回头再调用的函数

又遇到了回调函数,这次打算写下来分享一下。 所谓回调函数,或者在面向对象语言里叫回调方法,简单点讲,就是回头在某个时间(事件发生)被调用的函数。 再详细点:就是一个函数A,作为参数,传...

er3456qi
2018/08/27
0
0
spring中的JdbcTemplate简单记录

JdbcTemplate主要提供以下五类方法: execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句; update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate...

刘谱_smile
2015/07/15
156
0
利用回调函数+匿名类解决jdbc数据封装问题

最近由于公司要开发个报表系统,由于涉及到超大数据量的统计,频繁的sql语句,就没有在用hibernate,又重拾起了jdbc,在写jdbc助手类时自我感觉有个不错的建议和大家分享下: 上面的代码是个...

doliangzhe
2013/04/06
202
0
由多线程runable接口联想的回调函数

runable 接口中的run方法就是回调函数。 所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的...

eric_zhang
2012/02/06
475
0
IOC/AOP工具 - jBeanBox

jBeanBox是一个微形但功能较齐全的IOC/AOP工具适用于JAVA7+,利用了Java的初始化块实现的Java配置代替XML。jBeanBox采用Apache License 2.0开源协议。 其他一些IOC/AOP框架的问题: 1)Sprin...

yong9981
2016/07/25
3.3K
15

没有更多内容

加载失败,请刷新页面

加载更多

如何更改iOS应用程序的名称?

我前几天用一个愚蠢的开发代码名称开始了一个iPhone项目,现在我想改变项目的名称,因为它已经接近完成了。 但是我不知道如何使用Xcode来做这件事,尝试在info.plist文件中更改应用程序的名称...

技术盛宴
19分钟前
2
0
关于win10tensorflow的配置(CPU+GPU)

主要内容 CPU篇 GPU篇 【前期准备与注意事项】 环境:window1064位+python36(37)+CUDA9.0+cuDNN7.6+tensorflow_gpu-1.12.0 软件:anaconda+pycharm 硬件:有nvidia显卡的笔记本或台式(非A...

放只虎归个山
27分钟前
1
0
C#中的多行字符串文字

有没有一种简单的方法可以在C#中创建多行字符串文字? 这是我现在所拥有的: string query = "SELECT foo, bar"+ " FROM table"+ " WHERE id = 42"; 我知道PHP有 <<<BLOCKBLOCK; C#是......

javail
35分钟前
3
0
微信支付之小微商户扫盲!支持信用卡,免营业执照!

微信支付商户申请面向线下小微商户开放,符合条件的微信支付服务商可为小微商户发起接入申请。无需营业执照。 小微商户日收款额度为5万元~30万元 。 信用卡支付日限额为1千;月限额1万。 结算...

吴伟祥
今天
4
0
大话SDWebImage(三)-- 图片下载层

四、图片下载层 SDWebImageDownloader是处理图片下载的类 4.1 图片下载步骤 首先介绍下dispatch_barrier,GCD中的dispatch_barrier目的是在并发队列实现串行的效果,创建下载任务SDWebImageD...

aron1992
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部