Java中的回调学习

Java基础学习: java中的回调地狱问题 在Java中,虽然回调地狱(Callback Hell)这个概念不像在JavaScript中那样常见,但回调地狱确实是一个编程中可能遇到的问题,尤其是在处理大量嵌套回调时。回调地狱指的是当回调函数嵌套层次过深,导致代码难以理解和维护的情况。 阅读详情

前段时间在学Hibernate的时候看了一下Spring中的对Hibernate的包装,其中的HibernateTemplate类中使用了execute(HibernateCallback action)来实际做各种Hibernate操作,其中HibernateCallback是一个用来回调的接口
      public interface HibernateCallback{
 Object doInHibernate(Session session) throws HibernateException,SQLException;
 }

这样各种不同的操作都可以通过实现自己的HibernateCallback接口来做,如save:
     public void save(final Object entity, final Serializable id) throws DataAccessException  {
  execute(new HibernateCallback() {
   public Object doInHibernate(Session session) throws  HibernateException {
    session.save(entity, id);
    return null;
   }
  });
 }


excute函数大概如下:
public Object execute(HibernateCallback action) throws DataAccessException {
.......
try {
   Object result = action.doInHibernate(session);
   flushIfNecessary(session, existingTransaction);
   return result;
  }
.........
}


JAVA中的回调大致就是定义一个interface,而调用者不需要知道这个interface的具体实现,只需要调用接口函数就可以。在上面Spring的例子中是用Inner class来把接口的实现传给调用者的,如果不是Inner class,那就需要把接口具体实现的引用传给调用者。如think in java中的例子:
//回调接口
public interface FilenameFilter {
          boolean accept(File dir, String name);
      }
//接口实现
class DirFilter implements FilenameFilter {
        private String afn;
        public DirFilter(String afn){
            this.afn = afn;
        }  
        public boolean accept(File dir, String name){
            String f = new File(name).getName();
            return f.indexOf(afn) != -1;
        }
    }
//调用的方法
       public String[] list(FilenameFilter filter)
//实际调用
      String[] list = file.list(new DirFilter("wf"));


这只是我看的JAVA中的回调,在软件模块调用关系中回调指的是:回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口 (参见http://www-900.ibm.com/developerWorks/cn/linux/l-callback/index.shtml)
套用到上面java的例子好象都没成立,被调用者都没有在接口被调用时也会调用对方的接口,可能这是回调机制和回调函数的区别吧?
在JAVA中实现回调机制也是可以的,比如在多线程程序中,子线程可以调用主线程中的某个函数来发送某些消息给主线程。这个例子在Java Network Programming 2nd的125页中有,这里只写点片段:
子线程:
public class CallbackDigest implement Runable{
....
public void run(){
...
CallbackDigestUserInterface.receiveDigest(..);
...
}
....
}

而在主程序中有:
public class CallbackDigestUserInterface{
...
public static void receiveDigest(){
........
}
...
}

了解了回调再去看Command模式就轻松的多 :)
http://www.jdon.com/designpatterns/command.htm
http://www.javaworld.com/javaworld/javatips/jw-javatip68.html

目前关于java中的callback我就知道这么多,不对或遗漏之处,请达人指正。

java 回调函数 实现 java 回调函数 自己模拟实现 使用了接口来完成 立即下载

相关推荐

Reactor 响应式编程(第一篇:Reactor核心)

响应式:响应式编程: 全异步、消息、事件回调默认还是用当前线程,生成整个流、发布流、流操作.log();//只要不指定线程池,默认发布者用的线程就是订阅者的线程;

moments的博客 1572

java+代码回调+编写_Java回调实现

Java回调实现什么是回调回调核心思想案例代码实现后序一、什么是回调开发过程当中存在某种特殊的业务需求,例如:回调生活实例.PNG描述:老板给员工下达了工作任务之后,就去做其他事情了。(此时此 刻,老板不知道需要多长时间完成,不会一直等着,而是做自己其他事情)员工接收到任务之后,按照要求完成任务当员工任务完成的时候,主动的回馈给老板工作情况。当员工回馈工作情况的时候,此时此刻老板还在做另外的事情二...

weixin_39730801的博客 584

我想自己组装一台服务器,微调大模型通义千问2.5 Omni 72B,但是我是个人购买,资金非常有限,最省的方案

阶段动作✅ 推理用 GGUF + llama.cpp + 4090 加载 14B INT4✅ 微调训练 Qwen2.5-7B-Chat,使用 LoRA / QLoRA❌ 放弃Qwen2.5-Omni-72B 全量微调(显存需求 >160G,不现实)

AngelCryToo的专栏 2822

Java 实现回调

回调函数。

专注Java(全栈)应用开发,求知若渴,虚心若愚,talk is cheap, show me the code. 2067

Veeam Backup Replication Console 13 备份 PVE

本文介绍了如何通过Veeam Backup & Replication控制台配置与Proxmox VE(PVE)服务器的连接,包括主机地址、用户名密码和SSH信任设置。随后详细说明了部署备份Worker虚拟机的步骤,涵盖网络配置和VM创建。接着指导用户创建PVE虚拟机备份任务,包括命名、选择备份对象、存储位置、备份类型设置,以及配置备份计划任务。最后描述了备份测试执行过程,从启动备份到完成状态通知的完整流程。整个操作涉及服务器连接、Worker部署、备份配置和任务执行四个主要环节。

极致,细节 1602

西门子S7-1200PLC PID_Temp工艺指令在恒温控制中的实战应用

本文详细介绍了西门子S7-1200PLC中PID_Temp工艺指令在恒温控制系统中的实战应用。从硬件选型、安全接线,到TIA Portal软件组态、编程及核心PID_Temp指令调用,手把手指导搭建系统。重点讲解了利用指令自带的预调节与精确调节功能进行PID参数自整定,最终实现高精度、低波动的温度控制,适用于塑料成型、食品烘烤等多种工业场景。

i1j2k的博客 234

Java 回调的实现方式

Java 回调的几种方式

白T 2293

ansys 求解过程中出现未知错误。检查“求解信息”对象上的“求解器输出”,查找可能的原因。-静力学分析遇到的,这是什么原因——An unknown error occurred ——未找到解决方法

点击“确定”关闭弹窗后,进入Workbench的‌“求解信息”对象‌,查看‌“求解器输出”‌,搜索“Error”“Fatal”“Warning”等关键词,找到具体的错误描述,比如材料未定义、网格质量问题、内存不足等,这是精准解决问题的关键。进入“工具-选项-mechanical APDL”,取消勾选“分布式”,GPU加速器选择“none”。在“求解进程设置-高级”中调整内存分配参数,或切换为迭代求解器(如PCG求解器),它更省内存。尝试简化模型,比如删除非关键细节、合并重复部件,分步验证模型,定位问题源。

qq_15963745的博客 602

Java中的回调函数 (callback) 及其应用

回调函数在编程中是一种常见的设计模式,它允许一个函数在特定的时刻或条件下调用另一个函数。在Java中,我们可以通过接口和匿名内部类实现回调函数。本文将详细介绍Java中的回调函数,并提供相关代码示例。

无限进步的博客 1万+

音频链路分析

音频链路分析摘要 本文分析了蓝牙音频设备(BES2700)的音频传输链路,主要包括通话和音乐播放两种场景: 通话链路: 下行:蓝牙接收数据→解码→通过Codec输出到扬声器 上行:麦克风采集→Codec处理→蓝牙编码发送 音乐播放链路: 通过A2DP协议接收高质量音频数据 经过解码、EQ调节等音频处理后输出 系统采用多线程消息机制处理音频任务,通过mailbox传递控制消息,由回调函数处理具体音频数据流。不同应用场景使用不同的蓝牙协议栈(HFP/HSP用于通话,A2DP用于媒体)和编码方式(mSBC/SBC

云淡风轻 85

scratch绘制四个三角形 2024年6月中国电子学会 图形化编程 scratch编程等级考试二级真题和答案解析

​ scratch绘制四个三角形 一、题目要求 2024年6月电子学会图形化编程Scratch等级考试二级真题 1、准备工作 1.保留默认角色小猫; 2.添加背景Stars。 2、功能实现 1 .隐藏角色小猫,设置画笔裙始位置为(0,0),画笔颜色为黄色,画笔的粗细为5; 2. 点击绿旗,绘制如下图所示图形,三角形的边长为50。 二、案例分析 1、角色分析 角色:小猫 2、背景分析 背景:Stars背景 3、前期准备 1. 保留默认的小猫不变 ​

青少年编程学习指导 1716

JAVA回调机制

本人学生期间代码接触的都是C++与Matlab,在工作之后由于从事android开发需要接触java开发,于是边学边用,其中踩了不少坑,记录下来大家一起阅读。 1.定义 什么是回调函数?是一个通过函数指针调用的函数。英文为CALLBACK,call then back,回调函数不是由该函数的实现方法直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件进行响应。在JAVA中可以特定理解为:通过函数参数传递到其他代码的,某一块可执行代码的引用。 2.分类 一般将回调函数分为两类:同步回

weixin_43195281的博客 5328

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java 学习4。回调 。

学oc语法 还用了一周。没向导 学java 语法。一天时间。就一大半了。 这个流程还是不错的。后面还有io .以及反射。多线程。后2个,可以不在熟悉基本语法流程中。 java 还是很规矩和强力的语言。回调 非常 标准和简洁 和c# 一样 。 需求:假如我们有个方法可以显示一些字符信息。如果我们需要修改信息。一般都是修改类本身的方法。 如果需要不修改类,而达到此自定义信息的目的。那么就...

weixin_30540691的博客 97

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java学习之回调

是什么——什么是回调从调用方式上看,分为三种:同步调用,异步调用,回调。 根据理解,草草的画了个图 1. 同步调用:是一种阻塞式调用,如图1,程序执行到A,再执行到B,需要执行完B才会接着执行A,即在2–3–4执行的过程中不会执行5,整个流程应该是1–>A–>2–>B–>3–>4–>6 2. 异步调用:类似于消息和事件机制,解决同步阻塞问题。A执行到B后,A与B互不影响,不会等到B执行完A

Sky的博客 470

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

记录java回调学习

回调的大概流程: 首先,类A调用类B的b方法,目的是来完成自己的需求,然后,类B开始执行b方法,执行结束后得到一个结果。此时,类B要把这个结果返回给类A,所以类B调用类A中的a方法,返回了结果。对于类A来说a方法就是回调函数。 举个例子: 领导(类A)要去开会,但是领导正在准备开会需要的文件没空自己去安排场地,于是就让员工(类B)去安排场地(b方法)。然后让员工安排完场地后,就通过领导给员工的一个...

zhlzdjdj的博客 218

java接口回调学习

先创建一个接口: //定义一个接口 public interface JieKou { public void show(); } 创建一个类实现这个接口: public class Boss implements JieKou{ //定义一个老板实现接口 @Override public void show() { System.out.print...

有的话没说出来之前,你是他的主人,一旦说出来你就成了他的奴隶||想要干好事,别太把自己当人,别把别人太不当人||认识这个人就是开了一扇窗户,就能看到不一样的东西,听到不一样的声音,能让你思考、觉悟,这已经够了 380

Java中的接口回调学习使用

日常开发中接口回调机制无处不在,刚开始用时却一直很模糊,今天就认真的了解一波 我觉得一位大神博主(Bing_Hui )解释的很到位,博客传送们:https://blog.youkuaiyun.com/hbyh632/article/details/78592242           在应用开发中,接口回调机制是一种常用的设计手段,也可以说是一种处理问题的模型,类之间,模块之间,都有一定的调用关系,一般来...

qq_40731414的博客 1284

java学习笔记之同步回调和异步回调

回调:回调就是指互相调用,类A调用类B的方法,被调用的类B的方法有调用类A的方法。可以用接口的多态性来实现。回调可以分为同步回调和异步回调。 同步回调:就是要按照顺序来。上代码: package com.ykh; public class ClassA implements callback{ public void funA() { System.out.println("现在演示同步...

qq_42902163的博客 585

java回调的学习

回调概念:    软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户

west_zx的专栏 403

Java学习之Java接口回调理解

Java接口回调   在Java学习中有个比较重要的知识点,就是今天我们要讲的接口回调。接口回调的理解如果解释起来会比较抽象,我一般喜欢用一个或几个经典的例子来帮助加深理解。   举例:老板分派给员工做事,员工做完事情后需要给老板回复,老板对其做出反应。   上面是个比较经典的例子,下面用代码实现上述例子: (1)先定义一个接口 1 package JieKouHuiDia...

anyizen97464041的博客 108

Java学习之什么是回调?

{ 比如你是某翻译部的老编,将某国外著作交给了你的手下,并告诉他说:“请翻译好后交给我。”他对你说:“好的,我知道了。”于是经过一段时间,你的这位手下翻译好了这本书,并按照你所说的将成果交给你。上面这个例子其实就是一次回调。转换成我们的程序就是如下:Class Leader {Void 交给我(成果) {……}Void 下命令() {Member.接收命令(交给我(成果));}}Class Member {Void 接收命令(交给你(成果)) {// 执行命令交给你(成果);}}首先老编有两个方法――交给我

androidbull的专栏 535

java回调函数学习

前不久学习了代理模式,其中有一个核心之一是Proxy.newProxyInstance();这里有三个参数,   loader:目标对象的类加载器  interfaces:目标对象实现的所有接口组成的数组  handler:定义一个调用目标类中方法的回调类 所以我就在想,这个回调函数是什么,看源码也看不懂它怎么运转的。百度搜索了学习了一下,然后做了个小demo。 回调函数:就是一个...

daxia7577的博客 138

Java学习之回调机制

Java学习之回调机制目录Java学习之回调机制 目录 前言 一回调机制简介 二举例说明 三使用具体代码进行实现说明 四总结前言在进行java学习时,听到很多大牛说,java有很多机制,例如:反射机制、回调机制等等。 先开始,也是晕的没边。后来,查找很多资料后,了解了一些,在这里记录一下,java的回调机制吧。一、回调机制简介简而言之,就是,A类调用B类的E方法,然后,因为B类的E方法会调用A类的

snowlive's blog 418

Winform学习笔记(二)—— WebClient异步回调Java后台接口

【Winform】学习笔记(二)—— WebClient异步回调Java后台接口 背景: 项目中需要用到一个winform的桌面程序,主要是用winform来做前端界面,数据都是来源于Java后台接口,所以在这里做一个Winform调用Java后台接口的学习笔记。 一、调用的几种方式 常见的几种调用机制有同步调用(最基本的调用方式),异步调用,异步回调。 同步调用: 比如对象A中的方法调用到对象B...

ck233的博客 1678

接口的回调1-java学习

在安卓开发的过程中,常常会遇到很多监听事件,setOnClickListener,很多网上的开源框架imageloader(用到了displayImage方法,就需要设置接口回调),或者是项目中遇到的别人写的代码。 作为刚工作的初学者,了解设计模式很重要,有利于读懂别人的代码,以及写出好代码。 下面写一个简单的demo方便理解:例子:当判断string字符串的类型,有纯数字的字符串,纯字母的字

leafact的专栏 876
上一篇: JSP标签库介绍(1)定制标签内幕
下一篇: 孤单的日子
asper
博客等级 码龄26年 3粉丝 35原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值