方法主体不能被声明为静态;静态方法只能在静态或顶级类型中声明。

4
class Perkusja {
  boolean talerze = true;
  boolean beben = true;

  void zagrajNaBebnie() {
    System.out.println("bam, bam, baaaa-am-am");
  }
  void zagrajNaTalerzach() {
    System.out.println("brzdęk, brzbrzrzdęęk");
  }
  class PerkusjaTester {
    public static void main(String[] args) {
        Perkusja p = new Perkusja();
    }
  }
}

你好!我是新来的stackoverflow用户,对我的糟糕编辑请多包涵。

我刚开始学习Java,但是不知道具体出了什么问题。我在以下代码行中遇到了以下错误:

public static void main(String[]args)

方法main无法被声明为静态;静态方法只能在静态或顶级类型中声明

我使用的是eclipse并且正在完成一些简单的java练习。我谷歌了这个问题,但是回答通常与更复杂的代码相关。

如何解决它?这个错误的原因是什么?我会非常感激有人对这个特定例子进行解释。

谢谢!

3个回答

12
您将主方法声明在“PerkusjaTester”类中,该类是“Perkusja”类的内部类,这是禁止的。
您应该将测试类声明在“Perkusja”类之外。
注意:“PerkusjaTester”是一个内部类,不是静态嵌套类。这就是为什么“PerkusjaTester”不是静态类型的原因。正如Jon Skeet所提到的,您也可以在“PerkusjaTester”类上添加“static”关键字。

将类声明为静态嵌套类可以让你使用静态方法,但你也可以轻松地从外部类的构造函数中移除静态修饰符并调用它。 - JohnMerlino

2

这段代码无法运行,因为从概念上讲,在调用main之前必须先声明一个Perkusja的实例。

这是因为内部类PerkusjaTester没有标记为静态的。

最好的解决方法是编写static class PerkusjaTester {

然后main就可以访问了。


0
< p > PerkusjaTester 中的主方法是 Perkusja 的内部类,这是被禁止的。考虑到您是新手,我可以给出简单的答案,即删除最后一个花括号并将其放在 class PerkusjaTester 上方,错误将被消除。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接