一个函数如下:(部分代码省略)
public static List parse(String html, boolean isTitleOnly, String includeWords,Date latestStoryTime) {
List stories = new ArrayList();
for (String storyItem:storyItems) {
// log.info(storyItem);// test
SemiStory story = getStory(storyItem, isTitleOnly);
if (story == null) {
log.info(storyItem);
log.error("一条结果未匹配,请检查匹配规则");
continue;
}
stories.add(story);
}
if (stories.isEmpty()) {
log.error("无相关新闻或需页面验证,请检查");// message
}
return stories;
}
有两个地方调用这个函数,一个地方要在循环里面加时间判断,一个地方却不需要。这个时候就可以使用回调了,
实现方法如下:
有时间判断的地方的代码是:
List stories = NewsBaiduParser.parse(html, isTitleOnly, includeWords,latestStoryTime
,new IFilter(){
public boolean filter(Story story, Date latestStoryTime)
{
// TODO Auto-generated method stub
if(story.getTime().compareTo(latestStoryTime)<0){
return false;
}
return true;
}
});
没有用到时间判断的地方的代码:
List similarStories = NewsBaiduParser.parse(html, isTitleOnly, includeWords,latestStoryTime,
new IFilter(){ public boolean filter(Story story, Date latestStoryTime) { // TODO Auto-generated method stub return true; } });