【发布时间】:2014-05-29 17:05:05
【问题描述】:
根据Solr's blog,Lucene 要求 TokenFilter 子类必须声明为 final。在这种情况下,final 类的优势是什么?它使现有 TokenFilter 的功能无法扩展。
【问题讨论】:
根据Solr's blog,Lucene 要求 TokenFilter 子类必须声明为 final。在这种情况下,final 类的优势是什么?它使现有 TokenFilter 的功能无法扩展。
【问题讨论】:
TokenFilter 扩展 TokenStream,它的 Javadoc 说:
Lucene 中的
TokenStream-API 基于装饰器模式。 因此所有非抽象子类必须是最终的或至少有一个incrementToken()的最终实现!这在 Java 时被检查 断言已启用。
例如,StandardFilter 未标记为 final(只有 incrementToken() 是)。
因此,如果您想扩展现有的 TokenFilter,最好通过委托来实现。
【讨论】: