从java中的main方法调用另一个方法
我有
class foo{ public static void main(String[] args){ do(); } public void do(){} }
但是当我通过在命令行上运行命令java foo
从main
调用do()
,java会抱怨你无法从静态函数调用方法。
所以我的问题是:如何从main方法调用方法,如果不可能,在使用java命令从命令行运行程序后调用方法的替代策略是什么。
您只能针对类的实例调用实例方法,如do()
(这是一个非法的方法名称,顺便提一下):
public static void main(String[] args){ new Foo().doSomething(); } public void doSomething(){}
或者,如果适用于您的设计,也可以将doSomething()
设为静态。
在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中的类应该以大写字母开头。
这是Java中的基本理解,但对于新程序员来说可能有点棘手。 对静态和实例方法之间的区别进行一些研究。 基本区别是实例方法do()只能访问类foo的实例。
您必须实例化该类,创建一个用于调用实例方法的对象。
我已经为您提供了一些评论和示例。
public class SomeName { //this is a static method and cannot call an instance method without a object public static void main(String[] args){ // can't do this from this static method, no object reference // someMethod(); //create instance of object SomeName thisObj = new SomeName(); //call instance method using object thisObj.someMethod(); } //instance method public void someMethod(){ System.out.print("some message..."); } }// end class SomeName
你可以采取多种方式。 这是两个。 干杯!
package learningjava; public class helloworld { public static void main(String[] args) { new helloworld().go(); // OR helloworld.get(); } public void go(){ System.out.println("Hello World"); } public static void get(){ System.out.println("Hello World, Again"); } }
如果你想在main方法中使用do()
,有两个选择,因为一个是静态的,而另一个是(do())
- 创建新实例并调用do(),如
new Foo().do();
- make
static do()
方法
看看这个太阳教程
首先java不允许你有do()
方法。 相反,你可以使它成为doOperation()
。
第二,你不能直接从静态函数调用非静态方法。 Main
是静态function。 您需要首先实例化该类,然后使用该实例调用方法。
第三,您可以直接从非静态方法调用静态方法。