java回调的应用

来源:互联网 发布:淘宝首页全屏尺寸 编辑:程序博客网 时间:2024/06/04 19:37

一个函数如下:(部分代码省略)

public static List<SemiStory> parse(String html, boolean isTitleOnly,

            String includeWords,Date latestStoryTime) {

        
        List<SemiStory> stories = new ArrayList<SemiStory>();
        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<SemiStory> 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<SemiStory> similarStories = NewsBaiduParser.parse(html, isTitleOnly, includeWords,latestStoryTime,
                        new IFilter(){

                            public boolean filter(Story story, Date latestStoryTime)
                            {
                                // TODO Auto-generated method stub
                                return true;
                            }
                    
                }
);