免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 18478 | 回复: 1
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(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
2 [报告]
发表于 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就是因为我以为他是第二种回调函数,然后就怎么绕也绕不出去,可以说是相当菜了。

捕获.PNG (14.67 KB, 下载次数: 96)

图1

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP