Java &引用;main方法不能声明为静态;静态方法只能在静态或顶级类型中声明;
你好!!我是stackoverflow的新手,所以请原谅我糟糕的编辑 我是Java新手,不知道问题到底出在哪里,出在哪里。 我在线路上遇到以下错误Java &引用;main方法不能声明为静态;静态方法只能在静态或顶级类型中声明;,java,static,compilation,main,Java,Static,Compilation,Main,你好!!我是stackoverflow的新手,所以请原谅我糟糕的编辑 我是Java新手,不知道问题到底出在哪里,出在哪里。 我在线路上遇到以下错误 公共静态void main(字符串[]args): main方法不能声明为静态;静态方法只能在静态或顶级类型中声明 我正在使用eclipse,我正在做一些简单的java练习。我用谷歌搜索了这个问题,但答案通常与更复杂的代码片段有关 我如何修复它,以及以下错误的原因是什么?如果您能解释一下这个例子,我将不胜感激 干杯 您正在PerkusjaTester
公共静态void main(字符串[]args)
:
main方法不能声明为静态;静态方法只能在静态或顶级类型中声明
我正在使用eclipse,我正在做一些简单的java练习。我用谷歌搜索了这个问题,但答案通常与更复杂的代码片段有关
我如何修复它,以及以下错误的原因是什么?如果您能解释一下这个例子,我将不胜感激
干杯 您正在
PerkusjaTester
中声明main方法,它是Perkusja
的一个内部类。这是禁止的
您应该在类Perkusja
注意:
PerkusjaTester
是一个内部类,而不是静态嵌套类。这就是为什么PerkusjaTester
不是静态类型。正如Jon Skeet所提到的,您还可以在类PerkusjaTester
上添加关键字static
此代码无法工作,因为从概念上讲,必须在调用main
之前声明Perkusja
的实例
这是因为内部类PerkusjaTester
未标记为静态
最好的修复方法是编写静态类PerkusjaTester{
然后可以访问
main
。PerkusjaTester中的主要方法是禁止使用的Perkusja
的内部类。考虑到您是新手,我可以给出的简单答案是,删除最后一个卷曲括号并将其放在类PerkusjaTester
上方,错误将被删除。或makeperkusjaTester
当然是一个静态嵌套类。这也行。@JonSkeet编辑了我的评论。谢谢。是的,声明为静态嵌套类使您可以使用静态方法,但您也可以轻松地删除方法签名的静态修饰符,并从外部类的构造函数调用它。
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();
}
}
}