Может ли метод main() класса быть вызван из другого класса в Java

Может main() метод класса будет вызываться в другом классе в Java?

например

class class1{

  public static void main(String []args){

  }

}

class class2{

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

}

7 ответов

Если вы хотите вызвать основной метод другого класса, вы можете сделать это таким образом, если я понимаю вопрос.

  public class MyClass {

    public static void main( String[] args ) {

      System.out.println("main() method of MyClass");
      OtherClass obj=new OtherClass();
    }
  }

  class OtherClass {

    public OtherClass() {

      // Call the main() method of MyClass
      String[] arguments = new String[] {"123"};
      MyClass.main(arguments);
    }
  }

Если я правильно понял ваш вопрос...

Метод main() определен в классе ниже...

public class ToBeCalledClass{

   public static void main (String args[ ]) {
      System.out.println("I am being called");
   }
}

Вы хотите вызвать этот основной метод в другом классе.

public class CallClass{

    public void call(){
       ToBeCalledClass.main(null);
    }
}

Да, но только если main объявлен публичным

Насколько я понимаю, вопрос НЕ в рекурсии. Мы легко можем позвонитьmainметод другого класса в вашем классе. Следующий пример иллюстрирует статический и вызов по объекту. Обратите внимание на пропуск словаstatic в Class2

class Class1{
    public static void main(String[] args) {
        System.out.println("this is class 1");
    }    
}

class Class2{
    public void main(String[] args) {
        System.out.println("this is class 2");
    }    
}

class MyInvokerClass{
    public static void main(String[] args) {

        System.out.println("this is MyInvokerClass");
        Class2 myClass2 = new Class2();
        Class1.main(args);
        myClass2.main(args);
    }    
}

Результат должен быть:

это класс-оболочка

это класс 1

это класс 2

Да, если это общедоступно, и вы передаете правильные аргументы. Смотрите эту ссылку для получения дополнительной информации. http://www.codestyle.org/java/faq-CommandLine.shtml

попробуйте этот код

      // Java method to show Calling main() method
// externally from the same class

import java.io.*;

class GFG {

    static int count = 0;

    // The method that calls the main() method
    static void mainCaller()
    {

        System.out.println("mainCaller!");
        count++;

        // Calling the main() only 3 times
        if (count < 3) {

            // Calling the main() method
            main(null);
        }
    }

    // main() method
    public static void main(String[] args)
    {
        System.out.println("main");

        // Calling the mainCalller() method
        // so that main() methiod is called externally
        mainCaller();
    }
}

Конечно. Here's a completely silly program that demonstrates calling main рекурсивно.

public class main
{
    public static void main(String[] args)
    {
        for (int i = 0; i < args.length; ++i)
        {
            if (args[i] != "")
            {
                args[i] = "";
                System.out.println((args.length - i) + " left");
                main(args);
            }
        }

    }
}
Другие вопросы по тегам