为什么必须声明Lucene Token Filter类" final"?

时间:2014-05-29 17:05:06

标签: java lucene tokenize

根据Solr's blog,Lucene要求必须将TokenFilter子类声明为final。在这种情况下,最终课程的优势是什么?这使得无法扩展现有TokenFilter的功能。

1 个答案:

答案 0 :(得分:2)

TokenFilter扩展TokenStream,其Javadoc说:

  

Lucene中的TokenStream - API基于装饰器模式。   因此,所有非抽象子类必须是final或至少具有a   最终实施incrementToken()!这在Java时被检查   断言已启用。

例如,StandardFilter未标记为final(仅incrementToken())。

因此,如果您想扩展现有的TokenFilter,最好通过委派来完成此任务。