在 java 中出现了一个非常奇怪的语法错误

Got a very strange syntax error in java

我的 java 程序中出现了一个非常奇怪的错误。 此代码没有显示错误:

buttonPlay.addListener(new ClickListener(){
            public void clicked(InputEvent event, float x, float y) {
                /*public GameScreen(Create create) {
                    this.create = create;
                }*/
            }
        });

但是如果我删除注释,Eclipse 指出有两个错误:

  1. 我应该插入一个“}”来完成“public void的方法体 点击了。

  2. 我应该删除代码的最后一个“}”。

所以“public GameScreen(Create create)”产生了问题,Eclipse 突然不知道块在哪里开始和结束(我认为)。

我对此真的没有任何解释,很高兴得到每一个答案。

在注释掉的代码未注释的情况下,您试图直接在方法中声明构造函数。你不能在 Java.

中这样做
// You can't do this
buttonPlay.addListener(new ClickListener(){                   // 1
    public void clicked(InputEvent event, float x, float y) { // 2
        public GameScreen(Create create) {                    // 3
            this.create = create;                             // 3
        }                                                     // 3
    }
});
  1. 实例化匿名class。这样就好了

  2. 正在实施那个匿名 class 的方法(您想在那里添加一个 @Override)。也可以。

  3. 直接在另一个方法中声明构造函数。你不能那样做。

public void clicked(...) 是一个方法,在其中,您试图创建一个构造函数(至少这是注释代码的内容)。

构造函数是class特定的,不能嵌套在方法中。这就是编译失败的原因。