主类方法在类错误中不是静态的
class useTent { Scanner keyboard=new Scanner (System.in); public void main (String[] args) { Tent t= new Tent(); HireContract hc = new HireContract(); ProcessHire(t, hc); } }
这是我的代码,我一直得到同样的错误:
“主要方法在类useTent中不是静态的,请将main方法定义为:public static void main(String [] args)”
当我使它静态时我得到以下错误:
“C:\ Users \ Emma \ Documents \ opps ass1 \ useTent.java:22:错误:非静态方法ProcessHire(Tent,HireContract)无法从静态上下文ProcessHire(t,hc)引用;”
而且还是
“错误:主要方法在类useTent中不是静态的,请将main方法定义为:public static void main(String [] args)”
main
的签名需要static
,就像错误告诉你的那样
public static void main (String[] args) {
你没有发布ProcessHire
但我认为你想要一个new
,也许是为了保存参考
ProcessHire ph = new ProcessHire(t, hc);
默认情况下,Java会查找方法
public static void main (String[] args) { }
或者说
public static void main (String ...args) {}
args可以是任何名称,如public static void main(String … arguments){}
如果您已经有一个public static void main方法,那么您可以使用另一个main方法作为普通方法。
现在当你使方法静态时你得到另一个错误,因为在静态上下文中,调用非静态方法(本地到类)而不初始化它的对象会产生错误,因为java不允许来自静态上下文/方法的非静态调用。
non-static method error
一个示例解决方案是使ProcessHire方法静态: –
class UseTent { Scanner keyboard=new Scanner (System.in); public void main (String[] args) { Tent t= new Tent(); HireContract hc = new HireContract(); ProcessHire(t, hc); } public static void processProcessHire(Tent tent,HireContract hireContract){ //your method definition } }
或者如果你不能使方法静态,那么使用下面的方法: –
class UseTent { Scanner keyboard=new Scanner (System.in); public void main (String[] args) { Tent t= new Tent(); HireContract hc = new HireContract(); new UseTent().ProcessHire(t, hc); } public void processProcessHire(Tent tent,HireContract hireContract){ //your method definition } }
主类应该是public static void main (String[] args)
如果ProcessHire方法是静态的并且在ABC类中试试这个,
class useTent{ Scanner keyboard=new Scanner (System.in); public static void main (String[] args){ Tent t= new Tent(); HireContract hc = new HireContract(); ABC.ProcessHire(t, hc); } }
也遵循Java命名约定。