Muk*_*oel 9 java eclipse syntax-error eclipse-indigo
我处于编码的中间,意外地将以下代码行放在我们声明实例变量的类的一部分.但我检查并且它在任何地方给出相同的错误我的意思是:在静态块内,构造函数内,任何类方法内.除非private;放,因为它使类的第一行
Syntax error, insert "EnumBody" to complete ClassBodyDeclarations中的Eclipse工具提示错误(如下面还评论通过我对我的工作区验证写@ chaitanya10)当我们悬停光标在其上.
我明白有错误.
但当我将光标悬停在错误上时,我不明白错误消息.这条消息是什么意思?
它为什么期待EnumBody?
以下是截图.

要获得真正的解释,有人需要对语法检查以及Eclipse Java编译器前端的语法错误恢复和报告组件进行详细分析.但最可能的解释是,您的"异常"语法错误"混淆"了编译器的语法错误恢复代码.
简而言之,它是一个次要的编译器错误(或功能).
开发人员很可能知道这一点,但是没有修复它,因为:
对于它的价值,以下内容:
public class Foo;
Run Code Online (Sandbox Code Playgroud)
错误: Syntax error, insert "ClassBody" to complete ClassBodyDeclarations
public enum Foo;
Run Code Online (Sandbox Code Playgroud)
错误: Syntax error, insert "EnumBody" to complete ClassBodyDeclarations
public interface Foo;
Run Code Online (Sandbox Code Playgroud)
错误 Syntax error, insert "InterfaceBody" to complete ClassBodyDeclarations
无论如何,我认为发生的事情是,在这种情况下,
org.eclipse.jdt.internal.compiler.parser.Parser.consumeEnumConstantHeader()当它使用此代码获得解析错误时,它会尝试恢复:
if(this.currentToken == TokenNameSEMICOLON) {
RecoveredType currentType = currentRecoveryType();
if(currentType != null) {
currentType.insideEnumConstantPart = false;
}
}
Run Code Online (Sandbox Code Playgroud)
所以它正确地指出我们不在枚举中,所以我们得到如上所述的错误,但它没有意识到我们甚至不知道它是否是枚举.你可以在这里查看来源:
换句话说,它可能是Eclipse团队在添加Enumerations时引入的一个错误,它的处理方式与其他一些令牌略有不同,这会导致它以不同的方式被恢复,因此会出现编译器错误.
| 归档时间: |
|
| 查看次数: |
28229 次 |
| 最近记录: |