<marquee width=358>欢迎来到月影社区,希望这里可以成为您美丽的梦幻花园,如果你觉得这里好请分享给您的朋友!- wf66.com</marquee> 将月影社区设置为您的首页将月影社区地址加入到您的收藏栏
月影社区时尚音乐音乐查询IP手机许愿之瓶最新更新文件加密访客留言爱音乐
欢迎您,首页 >> 信息中心 >> Java基础学习:functor的实现

请输入您关键字:


Java基础学习:functor的实现

推荐查看本文HTML版本


    经常听到回调函数(callback function)这个概念, 所谓回调函数,就是指这个函数先在某处注册,而它将在稍后某个需要的时候被调用。比如在利用SDK 进行Windows编程的时候,我们需要注册一个WNDCLASS类,这个类中有这样一个参数 lpfnWndProc, 要进行消息处理,我们就要用处理消息的函数的指针给它赋值。消息处理函数什么时候被调用的?我们没有显式地在程序中看到啊。是OS调用的。 这是SDK的试验方式,当然用的是过程式的语言C,可以通过传递函数的指针实现。
C++中怎么来实现呢?当然,C++兼容C,用函数指针就可以。 同时C++又提供了面向对象的机制,可不可以有不同的实现机制呢? 当然! STL 中的functor(Function object)就可以用到回调上。 比如对一个存放int数据的vector进行递减排序的话,我们可以这样进行。
sort(vec.begin(),vec.end(),greater<int>());
greater<int>()就是我们传递的一个匿名对象,它重载了函数调用运算符“()”。我们没有显式地调用这个对象里面提供的函数,sort函数对对象里面的函数进行call back。
Java中要实现类似functor的功能,应该怎么办呢?Command模式可以帮上忙。Command模式看起来很简单,只要把command封装到一个接口中就可以。Command模式是回调机制的一个面向对象的替代品。
比如 java.io 中已经定义好的一个接口
public interface FilenameFilter {
boolean accept(File dir, String name);[月影读书频道 http://wf66.com/]
}
这个FilenameFilter就是Command,实现Command的类就是ConcreteCommand。这个接口所声明的操作 "accept" 就是看看目录dir中的文件name是否满足某种要求,如果满足就返回true,否则就返回false。这个要求是什么呢?你要对这个接口进行实现。比如我想看看这个文件的名称包含不包含指定
的字符串,那么就可以定义下面的类:
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;
}[月影读书频道 http://wf66.com/]
}
怎么样使用它呢?File类中有这样一个方法
public String[] list(FilenameFilter filter)
因此,我们就可以这样做了:
File file = new File(".");
String[] list = file.list(new DirFilter("wf"));
得到的list就是一个当然目录中所有包含字符串"wf"的文件名称的字符串数组。
怎么样,看起来是不是和C++中的functor差不多呢?
(基本上没有自己原创的,只是自己的学习笔记)

Java基础学习:functor的实现 2006-8-31
转到本主题第:[ 1 ]
相关评论

暂无评论

总计0页 [ ]上一页 下一页
发表评论(揪错)
呢称: * 您尚未登陆,请登录
来自: *
内容:
 

(为防止非法信息,您的言论提交后需要审核才能正常显示)

文学
精品文萃 情感天地 言情小说
网络小说 玄幻小说 悬疑恐怖
武侠小说 古典品谈 外国名著
儿童文学 会员原创 学习园地
杂谈其它
娱乐
爆笑网文 星座占卜 影音动漫
娱乐新闻 影视剧情
诗词
青竹诗歌 个人诗集 宋词雅赏
全唐诗录
新闻
国际新闻 国内新闻 科技新闻
体育新闻
图片
图文专区 艺术长廊 桌面壁纸
精品素材 像素图片
漫画
单幅漫画 爆笑四格 连环漫画
电脑
电脑入门 图形图像 编程开发
游戏
我爱Q宠 最新攻略 最新秘籍
游戏新闻 技巧心得
经济
帕格节电 财经资讯 股市证券
生活
百科知识 外语学院 潮流时尚
健康医疗 宠物花卉 汽车地带
行走天下
美食
面食甜点 家常菜品 药膳食疗
美食天下 烹饪技巧 松辽风味
燕京风味 巴蜀风味 滇黔风味
赣江风味 徽皖风味 闽台风味
齐鲁风味 中州风味 岭南风味
荆楚风味 三晋风味 淞沪风味
苏扬风味 潇湘风味 钱塘风味
民族风味 素斋仿荤
营销
管理杂谈 谈经论道 培训激励
经营战略 职场生涯 公关交际
关于我们版权声明本站导航友情连结作品演示 TOP↑
本论坛言论纯属发表者个人意见,与£月影社区£立场无关。 皖ICP备16024038号-1
禁止发布任何色情/政治/反动相关信息让我们共同来营造一个属于我们的梦幻家园
Copyright ©2001-2006 MoonShadow. All rights reserved.  Version 4.0  Licence 2006.4.2
建站天数:7189天 本站基于ASP+JS构建,完全自主开发,版权归属月影社区 管理员QQ:23165062 Time:46ms