看到这段程序: 
TokenStream result = new StandardTokenizer(reader);
    result = new StandardFilter(result);
    result = new LowerCaseFilter(result);
    result = new StopFilter(result, stopSet); 
其中,StandardTokenizer ,StandardFilter ,LowerCaseFilter ,StopFilter都是TokenStream的子类。 
TokenStream是抽象类,每个类都实现了next()函数,
如果调用result.next()函数,它会执行哪个next()?这段程序怎么感觉不合逻辑。

解决方案 »

  1.   

    result指向哪个对象,就执行哪个对象的的next()方法
      

  2.   

    运行时多态.new的哪个就是哪个的方法.
      

  3.   

    是new StopFilter(result, stopSet)这个了吧
    前面的因引用变量被覆盖对象变成垃圾????
      

  4.   

    应该不是执行最后一个,我的感觉是所有的next()函数都执行了,但是不知道为什么。想想如果前面几个不执行那创建了那么多对象干什么,直接留最后一句不就行了。但这在编程里算是什么技术呢?
      

  5.   

    你在next方法里加输出,测试下不就知道了
      

  6.   

    同意楼上的,在重写next方法,在每个方法中加入一下自己的标志性输出语句就可以了.呵呵