【发布时间】:2012-10-21 19:17:45
【问题描述】:
我在编写代码时不小心将以下代码行放在了我们声明实例变量的类部分。但我检查了一下,它在任何地方都给出了相同的错误:在静态块内、在构造函数内、在任何类方法内。除非将 private; 作为它提供的类的第一行
Syntax error, insert "EnumBody" to complete ClassBodyDeclarations(由@chaitanya10 在下面的 cmets 中编写,并由我在我的工作区验证)当我们将光标悬停在 Eclipse 工具提示上时出现错误。
我知道有错误。
但是当我将光标悬停在错误上时,我不明白错误消息。这条消息的含义是什么?
为什么它期待 EnumBody ?
下面是截图。
【问题讨论】:
-
这段代码是来自枚举吗??
-
@chaitanya10 不,此屏幕截图来自类的实例变量声明部分。但如果我把它放在某个函数或任何其他地方,它也是一样的错误。
-
我认为是因为你在末尾放了一个分号,编译器认为它是行尾,这显然是一个语法错误,因为你从未在声明中给出类型和变量名
-
@chaitanya10 ,我明白了。有错误。我不明白的是错误信息。为什么期待
EnumBody完成EnumDeclaration。 -
我将把它放在评论而不是答案中,因为我不知道它是否正确:我的猜测是 Eclipse 正在使用 LR 解析器来解析 Java 源代码。这意味着它正在尝试确定可以在该点匹配的产品的最右侧符号。它可以模糊匹配的东西是方法定义、字段等,以及像枚举这样的类型定义。在可以匹配的事物列表中,枚举定义可能在语法中首先列出。因此,Eclipse 认为它缺少枚举声明的最后一个符号,即 EnumBody。
标签: java eclipse syntax-error eclipse-indigo