在 java 中从 main 方法调用另一个方法

我有

class foo{

   public static void main(String[] args){
      do();
   }

   public void do(){}


}

但是当我通过在命令行上运行命令来调用时,java抱怨你不能从静态函数调用方法。do()mainjava foo

所以我的问题是:你如何从main方法调用方法,如果不可能在使用java命令从命令行运行程序后调用方法,有哪些替代策略。


答案 1

您只能对类的实例调用实例方法,例如(顺便说一句,这是一个非法的方法名称):do()

public static void main(String[] args){
  new Foo().doSomething();
}

public void doSomething(){}

或者,如果这适用于您的设计,也可以设置为静态。doSomething()


答案 2

在main方法之前检查静态,这会将该方法声明为类方法,这意味着它不需要调用实例。因此,当您要调用非静态方法时,Java会抱怨,因为您正在尝试调用所谓的“实例方法”,这当然需要首先;)

如果你想更好地了解类和实例,创建一个包含实例和类方法的新类,在主循环中创建一个对象并调用这些方法!

 class Foo{

    public static void main(String[] args){
       Bar myInstance = new Bar();
       myInstance.do(); // works!
       Bar.do(); // doesn't work!

       Bar.doSomethingStatic(); // works!
    }
 }

class Bar{

   public do() {
   // do something
   }

   public static doSomethingStatic(){
   }
}

还要记住,Java中的类应该以大写字母开头。