對於它的價值,如下:
public class Foo;
錯誤:Syntax error, insert "ClassBody" to complete ClassBodyDeclarations
public enum Foo;
錯誤:Syntax error, insert "EnumBody" to complete ClassBodyDeclarations
public interface Foo;
錯誤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;
}
}
因此,正確地計算出,我們不是一個枚舉內,所以我們會得到類似上面的錯誤,但是它並沒有意識到我們甚至不知道它是否枚舉。 You can look at the source here:
換句話說,這可能是Eclipse團隊在添加Enumerations時引入的一個錯誤,它的處理方式與某些其他令牌的處理方式稍有不同,導致它以不同的方式恢復,因此出現在編譯器錯誤。
@Aubin,我不認爲-1是合法的。我只是對錯誤消息感到好奇,因爲我不小心把上面的語句,看到了錯誤信息。 –
@Aubin,如果您更詳細地證明downvote的理由,我將不勝感激。 –
是來自Enum的這段代碼? – PermGenError