根据Solr's blog,Lucene要求必须将TokenFilter子类声明为final。在这种情况下,最终课程的优势是什么?这使得无法扩展现有TokenFilter的功能。
答案 0 :(得分:2)
TokenFilter
扩展TokenStream
,其Javadoc说:
Lucene中的
TokenStream
- API基于装饰器模式。 因此,所有非抽象子类必须是final或至少具有a 最终实施incrementToken()
!这在Java时被检查 断言已启用。
例如,StandardFilter
未标记为final
(仅incrementToken()
)。
因此,如果您想扩展现有的TokenFilter
,最好通过委派来完成此任务。