受保护的静态方法访问

for*_*ect 5 java lucene static protected

我正在尝试在 Lucene 信息检索 api 中使用受保护的静态方法。我对 static 的理解是,它们是从类定义中访问的,而我对 protected 关键字的理解是,它们只能从该类或子类的实例中访问。那么到底如何访问静态受保护方法呢?难道我的理解有误?我试图从导入的 jar 中的库调用受保护的静态方法。我该怎么做呢?

在本例中,我从StopwordAnalyzerBase调用 loadStopwordSet

min*_*das 2

为什么不能通过引用来调用此方法StopwordAnalyzerBase.loadStopwordSet(params)

考虑这个例子(它在我的机器上编译并运行):

package p1;

public class C1 {
    protected void nonStatic() {}
    protected static void isStatic() {}
}

----
package p2;

import p1.C1;

public class C2 extends C1 {
   public void someMethod() {
     super.nonStatic();
     C1.isStatic();     // or even C2.isStatic()
   }
}
Run Code Online (Sandbox Code Playgroud)

回到你原来的问题,我可以看到这个方法是从rabbitanalyzer:78(Lucene版本4.9.0,package org.apache.lucene.analysis.ar)以及许多其他方法中调用的。