java中的回调函数

article/2025/10/5 17:17:46

CALLBACK,即回调函数,是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。---百度百科

上面的解释是在C++中对回调函数的解释。

在java中也是存在回掉函数的,我们可以把回调函数理解为一个被作为参数传递的函数。

就英语单词的角度上,我们把CALLBACK这个单词拆开,即CALL和BACK,分别可以理解打电话和回来,也就是回拨电话

用打电话的例子来解释回调函数:

我给某个人打电话,但是这个人现在没有时间,那么我会告诉他:你忙完回电话给我。那么这个人做完事情之后就会给我回电话。这个过程就是回调函数。换成编程语言来说,可以这样理解:我调用一个函数,但是需要先执行这个函数,我让这个函数在执行完之后,调用我传给他的另一个函数,开始是我调用这个函数,最后变成了这个函数调用我传给他的函数。

为了大家更能深入理解,举一个现实中的例子,我去某个商场买衣服,但是到了之后发现我们要买的衣服断货了,那么这个时候,我们会把电话号留给销售人员,等货品到货的时候销售人员通过电话号码联系我,在这个例子中,电话号码就叫回调函数,到货销售人员给我打电话就叫做调用回调函数。在这个时间,我可以做任何事情,而不是一直你在那等到衣服到。

现在,大家对于回调函数大概了解了,那么,回调函数的使用场景是什么呢? ---在类A调用类B方法时,类B的方法需要执行很长时间的时候才能有反馈的时候。

回调函数的作用呢?解耦,可以把调用者与被调用者分开,调用者不用关心谁是被调用者。在上面的例子中,调用者是我,被调用者是销售人员,我们通过电话号码解耦。

例子:

类A:

public class A implements Callback {public void a(){System.out.println("这是A类的a方法");B b=new B();b.b(this);System.out.println("A类"+this);}@Overridepublic void callback(){System.out.println("回调函数");}
}

类B:

public class B {public void b(Callback callback){System.out.println("这是类B的b方法");callback.callback();System.out.println("B类"+this);}
}

回调函数接口:

public interface Callback {void callback();
}

客户端:

public class Client {public static void main(String[] args) {A a=new A();a.a();}
}

打印结果:

在这里,类A就相当于我,类B相当于销售人员,回调函数接口相当于我留在店里的电话号码,客户端就相当于商场。

解释我们可以把回调函数理解为一个被作为参数传递的函数的时候,可以这么说---callback作为类B的参数传递。


http://chatgpt.dhexx.cn/article/7Gb6OICW.shtml

相关文章

Java回调函数详解

什么是回调函数(CallBack) 在编写程序时,有时候会调用许多API中实现实现的函数,但某些方法需要我们传入一个方法,以便在需要的时候调用我们传入进去的函数。这个被传入的函数称为回调函数(Callback functi…

numpy 数据类型转换

参考NumPy 数据类型 - 云社区 - 腾讯云 首先需要导入numpy模块 import numpy as np 首先生成一个浮点数组 a np.random.random(4) dtype的用法 看看结果信息,左侧是结果信息,右侧是对应的python语句 我们发现这个数组的type是float64,…

javascript学习之数据类型转换

⭐️⭐️⭐️ 作者:船长在船上 🚩🚩🚩 主页:来访地址船长在船上的博客 🔨🔨🔨 简介:资深前端开发工程师,专注前端开发,欢迎咨询交流&#xff0…

【Python入门篇】——Python基础语法(数据类型与数据类型转换)

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句…

Java八种基本数据类型转换

转换规则&#xff1a; 1、八种基本数据类型当中除布尔类型之外剩下的7种类型之间都可以相互转换。 2、小容量向大容量转换&#xff0c;称为自动类型转换&#xff0c;容量从小到大排序(此处没有布尔类型)&#xff1a; byte < short < int < long < float < doub…

Java数据类型转换

前言 我将在这篇文章中介绍关于Java数据类型转换的知识 一、Java基本数据类型的转换 Java的数据类型转换分两种&#xff0c;一种是由低精度向高精度转换&#xff0c;另一种是由高精度由低精度转换 double float long int short byte 以上数据类型的精度由高到低 1.由低精度向…

C#中的数据类型转换

一、定义 C# 是一门强类型语言&#xff0c;对类型要求比较严格&#xff0c;但是在一定的条件下也是可以相互转换的&#xff0c; 如将 int 型数据转换成 double 型数据。 C#中的数据类型转换分为两种&#xff1a;隐式类型转换以及显式类型转换&#xff1b; 二、数据类型转换方式…

Pandas数据类型转换

Pandas数据类型转换 一、Pandas中的数据类型&#xff1a; 不管是Series还是DataFrame的每一列&#xff0c;都有对应的数据类型。在Pandas中存在以下数据类型。 Pandas dtypePython 类型Numpy类型描述objectstr或者mixed&#xff08;混合类型&#xff09;string_, unicode_, …

C++ 数据类型转换

C 数据类型转换 概述不同类型数据间的转换隐式类型转换强制类型转换自己声明的类型转换转换构造函数 类型转换函数案例应用 概述 在日常的开发中, 我们经常会用到数据类型转换, 所以我们要对数据类型转换有一定的了解. 不同类型数据间的转换 在 C 中, 某些标准类型的数据之间…

C语言数据类型转换详解

数据类型转换就是将数据&#xff08;变量、数值、表达式的结果等&#xff09;从一种类型转换为另一种类型。 自动类型转换 自动类型转换就是编译器默默地、隐式地、偷偷地进行的数据类型转换&#xff0c;这种转换不需要程序员干预&#xff0c;会自动发生。 1 . 将一种类型的…

Java的数据类型转换

Java的数据类型转换分为以下的两种&#xff1a; 一、自动类型转换 首先我们要了解自动类型转换是什么&#xff0c;为什么要进行自动类型转换呢&#xff1f; 1.自动类型转换就是类型范围小的变量&#xff0c;可以直接赋值给类型范围大的变量。比如以下代码&#xff1a; 其中int类…

Python 中数据类型转换

前两篇回顾&#xff1a; 第一篇&#xff1a;环境搭建以及运行 Python 的 3 种方式 第二篇&#xff1a;变量及数据类型 今天是 Python 基础系列第三篇&#xff1a;三种数据类型转换形式&#xff08;布尔值转换、字符串转换、数值转换&#xff09;。 一、转为布尔值 一&#xf…

C语言数据类型转换

文章目录 前言一、类型自动转换二、赋值转换三、强制类型转换 前言 C语言中&#xff0c;整型、单精度型、双精度型和字符型数据可以进行混合运算。字符型数据可以得与整型通用。例如&#xff1a; 100′A′8. . 65-2456. 75′a′是一个合法的运算表达式。在进行运算时&#xf…

数据类型的转换

数据类型转换分为两种&#xff1a;自动类型转换和强制类型转换。 一、自动类型转换 ①转换前的数据类型与转换后的类型兼容。 ②转换后的数据类型的表示范围比转换前的类型大。 条件②说明不同类型的数据进行运算时&#xff0c;需先转换为同一类型&#xff0c;然后进行运算。…

数据类型转换

数据类型转换 首先&#xff0c;数据类型一共有6种&#xff0c;分别是字符串、布尔值、数值、空值、未定义和对象。 其中基本数据类型&#xff1a; 1、number数值类型&#xff1a;在JS中所有的数值都是Number类型&#xff0c;包括了整数、浮点数(小数) - 拓展部分&#xff1a…

Java全栈开发

2022年9月6日更新 更多见 个人掘金收藏 写了一个小工具 &#xff0c;可以点击查看和搜索&#xff0c;见这篇博客 JavaFx入门5 - 一个小工具的实现 网上的一些Java全栈开发技术汇总 代码更新 &#xff1a;https://git.code.tencent.com/Java66/openJava.git 目录 比较好的…

java appkey_Java全栈工程师 风袖 appkey

Java全栈工程师 全局性思维 现代项目的开发&#xff0c;需要掌握多种技术。互联网项目&#xff0c;需要用到后端开发、前端开发、界面设计、产品设计、数据库、各种移动客户端、三屏兼容、restFul API设计和OAuth等等&#xff0c;比较前卫的项目&#xff0c;还会用到Single Pag…

Java全栈进阶

https://shq5785.blog.csdn.net/

java全栈前景_Java全栈开发哪个发展前景好

原标题&#xff1a;Java全栈开发哪个发展前景好 全栈和java哪个能更好迎合市场需求&#xff0c;有同学咨询学习哪个在以后前景和工作薪水上能更吃香&#xff0c;首先我们先来了解下Java开发和全栈开发的区别。 全栈开发工程师是指掌握多种技能&#xff0c;能够独立开发应用程序…

Java全栈工程师学习路线(思维导图)送你进大厂

当今软件行业中&#xff0c;Java是最流行的编程语言之一。许多企业都需要Java开发人员来构建和维护应用程序。因此&#xff0c;作为一名Java开发人员&#xff0c;学习Java编程语言和相关技术是至关重要的。下面是一些Java学习路线的建议&#xff1a; 目录 Java 基础Java高级We…