"方法main不能声明为static;静态方法只能在静态或顶级类型中声明"

时间:2014-04-01 13:16:15

标签: java static compilation main

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不能声明为static;静态方法只能在静态或顶级类型中声明

我正在使用eclipse,我正在做一些简单的java练习。我搜索了问题,但答案通常与更复杂的代码相关。

如何修复它以及导致以下错误的原因是什么?我很感激对这个特殊例子的解释。

干杯!

3 个答案:

答案 0 :(得分:6)

您在PerkusjaTester声明了主要方法,这是Perkusja的内部类。那是被禁止的。

您应该在课程Perkusja

之外声明您的测试课程

注意:PerkusjaTester是内部类,而不是静态嵌套类。这就是PerkusjaTester不是静态类型的原因。正如Jon Skeet所提到的,您还可以在类static上添加关键字PerkusjaTester

答案 1 :(得分:2)

此代码无法工作,因为从概念上讲,Perkusja的实例必须在调用main之前声明。

这是因为内部班级PerkusjaTester 标记为静态。

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

然后可以访问main

答案 2 :(得分:0)

PerkusjaTester中的main方法是Perkusja的内部类,这是被禁止的。考虑到您是这个新手,我可以提供的简单答案是,删除最后一个花括号并将其放在class PerkusjaTester上方,该错误将被删除。