java回调函数学习
前不久学习了代理模式,其中有一个核心之一是Proxy.newProxyInstance();这里有三个参数,
loader:目标对象的类加载器 interfaces:目标对象实现的所有接口组成的数组 handler:定义一个调用目标类中方法的回调类
所以我就在想,这个回调函数是什么,看源码也看不懂它怎么运转的。百度搜索了学习了一下,然后做了个小demo。
回调函数:就是一个函数调用另一个函数的过程。(调用某个函数,函数方法中有调用别的函数的动作)
我通过参考学习后自己先练习一个demo来学习深入回调函数。
demo情景:妈妈在做饭,儿子在妈妈把饭做好前要做别的事情比如做作业,打游戏。收到妈妈饭做好的消息后去洗手吃饭。
如果没有回调函数,儿子在妈妈饭做好前什么事情也做不了。
package deep;
/**
* 定义回调函数接口
* @author DeepSleeping
*
*/ public interface ICookOver { void cookOver();
}
package deep; /**
*
* @author DeepSleeping
*
*/
public class Mom implements ICookOver{ //定义妈妈做好饭后会怎么样的方法
@Override
public void cookOver() {
System.out.println("妈妈把饭做好了,去洗个手来吃饭!");
} }
package deep; /**
*
* @author DeepSleeping
*
*/
public class Son {
ICookOver cookOver; public Son(){ } public Son(ICookOver cookOver){
this.cookOver = cookOver;
} public void setCookOver(ICookOver cookOver) {
this.cookOver = cookOver;
} //做其他事情知道妈妈把饭做好了
public void doOtherUtillCookOver(){ System.out.println("儿子在做作业");
System.out.println("作业做完了在打游戏"); System.out.println("--------------------------------------"); //妈妈的饭做好了调用接口中的方法
cookOver.cookOver(); System.out.println();
System.out.println("儿子去洗手了");
System.out.println("儿子去吃饭了");
} }
package deep;
public class TestCallBack {
public static void main(String[] args) {
Mom mom = new Mom();
Son son = new Son();
son.setCookOver(mom);
son.doOtherUtillCookOver();
}
}

TestCallBack.class可以利用构造器加载mom
package deep;
public class TestCallBack {
public static void main(String[] args) {
Mom mom = new Mom();
Son son = new Son(mom);
son.doOtherUtillCookOver();
}
}
TestClaaBack.class也可以直接用匿名实现类来实现同样功能,不过得手写实现类里的方法了。开头提到的Proxy.newProxyInstance();中在之前的代理模式的代码实现中也是利用了匿名实现类来处理实现的。
package deep;
public class TestCallBack {
public static void main(String[] args) {
Son son = new Son(new ICookOver() {
@Override
public void cookOver() {
System.out.println("匿名实现类实现---");
System.out.println("妈妈把饭做好啦~快来吃饭!");
}
});
son.doOtherUtillCookOver();
}
}

java回调函数学习的更多相关文章
- Java中的回调函数学习
Java中的回调函数学习 博客分类: J2SE JavaJ# 一般来说分为以下几步: 声明回调函数的统一接口interface A,包含方法callback(); 在调用类caller内将该接口设置 ...
- Java中的回调函数学习-深入浅出
Java中的回调函数一般来说分为下面几步: 声明回调函数的统一接口interface A.包括方法callback(); 在调用类caller内将该接口设置为私有成员private A XXX; 在c ...
- Java 回调函数
下面使用java回调函数来实现一个测试函数运行时间的工具类: 如果我们要测试一个类的方法的执行时间,通常我们会这样做: public class TestObject { /** * 一个用来被测试的 ...
- java回调函数,看完就懂
java回调函数在网上了看了些例子,比较绕,不够清晰,自己写的一个例子比较通俗,java回调其实很简单. 举个例子我是类B,我有个方法叫b(),现在我要调用类A中的方法a(),写个代码就是: publ ...
- Java回调函数的理解与实现
回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 在Java里面,我们使用接口来实现回调.举个例子 所谓的回调,就是程序员 ...
- Java回调函数
维基百科上的定义:在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 所谓回调,就是客户程序C调用服务程 ...
- 转Java 回调函数的理解
所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数.例如Win32下的窗口过程函数就是一个典型的回调函数.一般说来,C ...
- JAVA回调函数ANDROID中典型的回调地方
在计算机中回调函数是指通过函数参数传递到其他代码类的,某一块可执行代码的引用,这以设计允许了底层代码调用者在高层定义的子程序. 在JAVA里面我们使用接口的方式来实现函数的回调. 回调的通俗就是:程序 ...
- Java回调函数的理解
所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数.例如Win32下的窗口过程函数就是一个典型的回调函数.一般说来,C ...
随机推荐
- SQL Server 2008 安装(lpt亲测)
SQL Server安装真的遇到好多问题啊!! 于是就决定写个备忘,方便自己也方便别人. 1.下载安装包 2.打开安装包,就遇到了restart computer 那里failed的错误,导致无法继 ...
- JAVA主流框架---SSM整合
1.通过监听器的形式引入spring 2.SpringMVC容器和Spring容器间的关系 3.汇通的主旨 让大家熟练掌握SSM调用过程.并且将后台调用彻底掌握. 4.传统项目的搭建的弊端 1.传 ...
- Oracle实战笔记(第一天)
导读 笔记内容来自韩顺平老师的视频<玩转Oracle实战教程>,可以结合笔记进行观看.第一天视频中还有Oracle的介绍和安装等内容,很容易搜索到,这里就不再进行总结. 目录 1.命令行工 ...
- Kali学习笔记26:OWASP_ZAP
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 OWASP_ZAP扫描器不同于之前介绍的Web扫描器: ...
- javaScript之实战 页面筛选功能
友情提示:gif图太小,可以ctrl 加 +键 放大 成品如下: 开始搭建 html 和 css html代码如下: <!DOCTYPE html> <html lang=&q ...
- 使用opencv库编译代码并运行
安装Opencv之后,首先要写一份代码测试一下是否ok. 本文代码图像边沿检测的: #include <opencv2/highgui/highgui.hpp> #include < ...
- 整理+学习《骆昊-Java面试题全集(上)》
★可以关注微信公众号,了解更多技术和行业信息 2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不 ...
- Ajax 提交 数据含特殊字符 出现500错误
Ajax 请求API接口 传输过去的数据 含有特殊字符,Ajax请求失败出现500错误. 假设你要post过去的数据为 :data ==>> {a:'!@!@!@!@#$#{}|> ...
- sql server 备份与恢复系列一 必备知识
一.备份概述 数据安全是数据库的生命,数据库在使用过程中难免会遇到如:使用者的误操作或是被恶意修改,硬件故障导致数据文件无法被访问,自然灾害导致机房在物理上的损毁.本章从备份与恢复的功能作为解决问题的 ...
- EL表达式jsp页面double小数点后保留两位
EL表达式jsp页面double小数点后保留两位,四舍五入 <fmt:formatNumber type="number" value="${member.logi ...