在java中有一个非常奇怪的语法错误

Jos*_*lux -6 java syntax

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

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

但是,如果我删除评论,请Eclipse说明有两个错误:

  1. 我应该插入一个"}"来完成"public void clicked"的方法体.

  2. 我应该删除代码的最后一个"}".

所以" public GameScreen(Create create)"会产生问题,Eclipse突然间不再知道块的开始和结束位置(我认为).

我对此没有任何解释,并且对每个答案都很高兴.

T.J*_*der 6

在注释掉的代码取消注释后,您将尝试直接在方法中声明构造函数.你不能用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
    }
});
Run Code Online (Sandbox Code Playgroud)
  1. 实例化匿名类.这可以.

  2. 实现该匿名类的方法(您想在@Override那里添加).还好.

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