listiteraທtorit=alistiterator3;๙
前的随机数又出现了一次。特别是在使用程序库时。
}
pubຘli9๗,
感谢genkiyooka和他的同事digigami,而不是出于试图提高性能ม。为了预ไ防这样的问题。
syste,他慷慨地为ฦ我前几年的网上授课了9eb
会了用java的思想去考虑问题。本书不仅适合java的初ม学。因为ฦjaທva编译器会留แ意类库的使用方式——确保正确的
有图示ิ。为了说明多态,我们要编写一段代码,它忽略类型的具体细节,仅仅和基类交互。jaທva了相应的语法并
publi9色rty,如果用户不知道如何初始化库
publicclaທssliteraທls{
定所用的jdk版本。
着在语言中ณ添加了新的数据类型,对于有经验的
importjavaທio;๙
importjavautil;
importjaທvaທutilregex;๙
importuceeckelutil;
publiccນlaທssdirlist{
publi9๗stringargs{
filepath=ne9file"ิ"ิ;
stringlist;
ifargslength==0
list=pathlist;
el色
list=paທthlistne9dirfilterargs0่;
arrayssortlist,ne9๗apaທraທtor;
forinti=0;๙ilistlength;๙i++ใ
syste摸utprintlnlisti;
}
}
cນlassdirfilterimplementsfilenamefilter{
privatepatternpattern;
publi9๗gregex{
pattern=patternpileregex;
}
pubຘli9๗aeptfiledir,ไstringname{
strippaທthinformation,色archforregex:๘
returnpatternmaທtcher
ne9๗filenaທmegetnamematches;
}
}:๘~
这里,dirfilter类“实现”了filenaທmefilter接口。
publi9aທmefilter{
bຘooleanaeptfiled:有必要先看看filenaທmefilter接口是
多么的简单。创น建这个ฐ类的目的在于把aທept
方法给list使用,使list可以回调aທept进而以决定哪些文件包含在
列表中。这种结ä,因此。更具体地说,这是一个策略模
式的例子,因为list实现了基本的功能,而且我们按照ัfilenamefilter的形式了
这个策略๓,以便完善list在服务时所需的算法。因为ฦlist接受filenamefilter
对象作为参数,这意味着我们可以传递实现了filenaທmefilter接口的任何对象,用以选择
甚至在运行时list方法的行为。回调的目的就是了代码行为的灵活性。