gpt4 book ai didi

java - 编译期间无法解析继承的嵌套静态类

转载 作者:搜寻专家 更新时间:2023-10-31 20:28:59 25 4
gpt4 key购买 nike

故事很短,从以下 Lucene 类的摘录开始:

分析器:

public abstract class Analyzer implements Closeable {

(...)

public static class TokenStreamComponents { ... }

(...)
}

分析器包装器:

public abstract class AnalyzerWrapper extends Analyzer {

(...)

@Override
protected final TokenStreamComponents createComponents(String fieldName, Reader aReader) {
return wrapComponents(fieldName, getWrappedAnalyzer(fieldName).createComponents(fieldName, aReader));
}

(...)

}

现在在 Grails 应用程序中我定义了自己的类 MyAnalyzer.groovy

class MyAnalyzer extends AnalyzerWrapper {

private final PerFieldAnalyzerWrapper perFieldAnalyzerWrapper

public MyAnalyzer() { ... }

@Override
protected Analyzer getWrappedAnalyzer(String fieldName) {
perFieldAnalyzerWrapper.getWrappedAnalyzer(fieldName)
}

@Override
protected TokenStreamComponents wrapComponents(String fieldName, TokenStreamComponents tokenStreamComponents) {
perFieldAnalyzerWrapper.wrapComponents(fieldName, tokenStreamComponents)
}
}

当我尝试运行/编译应用程序时,我得到:

[groovyc] Compiling 2 source files to E:\somewhere\...\target\classes
[groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
[groovyc] E:\somewhere\...\MyAnalyzer.groovy: 31: unable to resolve class TokenStreamComponents
[groovyc] @ line 31, column 5.
[groovyc] @Override
[groovyc] ^
[groovyc]
[groovyc] 1 error

但是,如果我在 MyAnalyzer 中重写方法的定义中将 TokenStreamComponents 的两次出现更改为 Analyzer.TokenStreamComponents,则该类编译很好。

有谁知道这种行为背后是否有一些合乎逻辑的原因,例如顺便问一下 Groovy 或 Grails 的行为方式,还是我只是遗漏了什么?

最佳答案

只需添加行 import Analyzer.*;到程序的导入部分。 !如果解决了请告诉我!

关于java - 编译期间无法解析继承的嵌套静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17614360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com