sırasında kalıtsal iç içe statik sınıf çözülemiyor hikaye oldukça kısa olduğunu ve lucene en sınıflardan birkaç aşağıdaki alıntılar ile başlar:derleme
Analiz:
public abstract class Analyzer implements Closeable {
(...)
public static class TokenStreamComponents { ... }
(...)
}
AnalyzerWrapper:
public abstract class AnalyzerWrapper extends Analyzer {
(...)
@Override
protected final TokenStreamComponents createComponents(String fieldName, Reader aReader) {
return wrapComponents(fieldName, getWrappedAnalyzer(fieldName).createComponents(fieldName, aReader));
}
(...)
}
Şimdi bir Grails uygulamasında kendi sınıfımı tanımladım, 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)
}
}
Ve çalıştırmayı denediğinizde/uygulamayı derlemek, alıyorum:
[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
Ancak, ben MyAnalyzer
içinde geçersiz kılınan yöntemin tanımı Analyzer.TokenStreamComponents
için TokenStreamComponents
her iki tekrarlarını değiştirirseniz, sınıf derler ince.
Böyle bir davranışın arkasında mantıksal bir neden olup olmadığını bilen var mı? Bu arada Groovy veya Grails davrandı mı, yoksa burada bir şey mi özledim?
İç sınıfı içe aktarmayı denediniz mi? –
İç sınıfı içe aktarma ile eğlence, IDE'nin onu otomatik olarak kaldırmasıdır çünkü gereksiz olduğunu belirler. Her halükarda, bunu içeri almam gerekmemesi veya özel bir şey yapmamam gerekmemesi gerekiyor. – konradstrack
Ama sorunuza cevap vermek için - org.apache.lucene.analysis.Analyzer.TokenStreamComponents'ı içe aktarmak da onu derlemekte. – konradstrack