免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 431 | 回复: 1

[FastDFS] FastDFS Java API中回调函数的作用 [复制链接]

论坛徽章:
0
发表于 2019-05-09 16:55 |显示全部楼层
在使用Java API过程中,我发现上传和下载函数均可采用回调函数,但是我不太理解它的作用是什么,和提供文件名下载有什么区别。因为提供文件名就直接下载到文件中了,所以比较好理解,但是存在回调函数后没有提供文件下载位置,就把我弄糊涂了。
public int download_file(String group_name, String remote_filename,
                           long file_offset, long download_bytes,
                           DownloadCallback callback)  throws IOException, MyException

比如上面的函数是在StorageClient类中,但是我没有理解这个callback是做什么的。希望大神们帮我讲解一下,不胜感谢!

论坛徽章:
0
发表于 2019-05-09 22:15 |显示全部楼层
自问自答吧,回调函数我一开始把它的含义理解错了,回调函数其实就是将该函数作为参数传递给某一函数使用,就比如我提出的这个函数public int download_file(String group_name, String remote_filename,
                           long file_offset, long download_bytes,
                           DownloadCallback callback)  throws IOException, MyException。在这个函数中有一个回调函数,这个回调函数的作用就是用来下载的,下载的字节流到了该DownloadCallback中的OutputStream,而我在这一系列的download_file函数中没有发现这个OutputStream是如何传入到DownloadCallback中,所以我推测是在使用该download_file函数前的时候创建一个OutputStream,将该输出流当作参数传入到该DownloadCallback中,即使用时是new一个DownloadCallback。因为我没有具体使用过该函数,只是使用了不需要回调函数的download方法,所以仅仅是推测。
除此之外,我一开始提出这个问题是因为我对回调函数的概念不是很清楚,目前我所知道的回调函数有两种,一种是这个问题中的,但是这种回调函数就只是把函数作为参数传入而已,从图1中就可以看出这确实是第一种回调函数。另一种是我认为比较切确的回调函数,大概意思就是有类A,他调用了类B的方法z,而方法z又调用了类A的方法x,这个方法x就是回调函数。
然后一般回调函数是用接口声明再实现,我一开始不理解这个DownloadCallback就是因为我以为他是第二种回调函数,然后就怎么绕也绕不出去,可以说是相当菜了。

图1

图1
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP