Рубрики

В Java, можем ли мы вызвать метод main () класса из другого класса?

В Java, можем ли мы вызвать метод main () класса из другого класса?
ИЛИ
Как вызвать метод public static void main (String [] args) из нашего кода?

Это некоторые вопросы, которые обычно озадачивают программиста на Java. Цель этой статьи — дать ответ на эти проблемы простым и эффективным способом.

Как мы знаем, метод main () для любого Java-приложения в качестве среды выполнения Java сначала вызывает метод main (). Таким образом, очевидно, что нам не нужно вызывать метод main () самостоятельно, так как он уже вызывается при запуске программы. Но что, если мы хотим вызвать метод main () из нашей программы? Это проблема.

Решение:

Хотя Java не предпочитает метод main (), вызываемый откуда-то еще в программе, он не запрещает делать и его. Таким образом, на самом деле, мы можем вызывать метод main () всякий раз, когда нам нужно.

Но вызвать метод main () из нашего кода довольно сложно. Это может привести к множеству ошибок и исключений , таких как:

  • Метод main () должен вызываться из статического метода только внутри того же класса.

    // Java-метод, чтобы показать, что метод main ()
    // должен вызываться только из статического метода
    // внутри того же класса

      

    import java.io.*;

      

    class GFG {

      

        // Метод, который вызывает метод main ()

        // Обратите внимание, что этот метод не является статичным

        void mainCaller()

        {

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

      

            // Вызов метода main ()

            main(null);

        }

      

        // метод main ()

        public static void main(String[] args)

        {

            System.out.println("main");

      

            // Вызов метода mainCalller ()

            // чтобы main () methiod вызывался извне

            mainCaller();

        }

    }

    Ошибка компиляции в коде Java:

    prog.java:27: error: non-static method mainCaller()
                         cannot be referenced
                         from a static context
            mainCaller();
            ^
    1 error
    
  • Метод main () должен передавать аргументы String [] при вызове его откуда-то еще.

    // Java-метод, чтобы показать, что метод main ()
    // должны быть переданы аргументы String []
    // во время вызова из другого места

      

    import java.io.*;

      

    class GFG {

      

        // Метод, который вызывает метод main ()

        static void mainCaller()

        {

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

      

            // Вызов метода main ()

            // Обратите внимание, что параметр не передается

            main();

        }

      

        // метод main ()

        public static void main(String[] args)

        {

            System.out.println("main");

      

            // Вызов метода mainCalller ()

            // чтобы main () methiod вызывался извне

            mainCaller();

        }

    }

    Ошибка компиляции в коде Java:

    prog.java:17: error: method main in class GFG
                         cannot be applied to given types;
            main();
            ^
      required: String[]
      found: no arguments
      reason: actual and formal argument lists differ in length
    1 error
    
  • Вызов метода main () приведет к бесконечному циклу, поскольку стек памяти знает, что нужно запускать только метод main ().

    // Java-метод, чтобы показать, что Вызов метода main ()
    // приведет к бесконечному циклу в качестве стека памяти
    // знает, что нужно запускать только метод main ()

      

    import java.io.*;

      

    class GFG {

      

        // Метод, который вызывает метод main ()

        static void mainCaller()

        {

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

      

            // Вызов метода main ()

            main(null);

        }

      

        // метод main ()

        public static void main(String[] args)

        {

            System.out.println("main");

      

            // Вызов метода mainCalller ()

            // чтобы main () methiod вызывался извне

            mainCaller();

        }

    }

    Ошибка RunTime в коде Java:

    RunTime Error in java code :-
     Exception in thread "main" java.lang.StackOverflowError
    
    mainCaller!
    main
    mainCaller!
    main
    mainCaller!
    main
    .
    .
    .
    

Правильный путь к этому:

Пример 1: вызов метода main () извне из того же класса

// метод Java для показа вызова метода main ()
// внешне из того же класса

  

import java.io.*;

  

class GFG {

  

    static int count = 0;

  

    // Метод, который вызывает метод main ()

    static void mainCaller()

    {

  

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

        count++;

  

        // Вызываем main () только 3 раза

        if (count < 3) {

  

            // Вызов метода main ()

            main(null);

        }

    }

  

    // метод main ()

    public static void main(String[] args)

    {

        System.out.println("main");

  

        // Вызов метода mainCalller ()

        // чтобы main () methiod вызывался извне

        mainCaller();

    }

}

Выход:

main
mainCaller!
main
mainCaller!
main
mainCaller!

Пример 1: вызов метода main () извне из другого класса

// метод Java для показа вызова метода main ()
// внешне из другого класса

  

import java.io.*;

  

class GFG {

  

    static int count = 0;

  

    // Метод, который вызывает метод main ()

    static void mainCaller()

    {

  

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

        count++;

  

        // Вызываем main () только 3 раза

        if (count < 3) {

  

            // Вызов метода main ()

            Test.main(null);

        }

    }

}

  

class Test {

  

    // метод main ()

    public static void main(String[] args)

    {

        System.out.println("main");

  

        // Вызов метода mainCalller ()

        // чтобы main () methiod вызывался извне

        GFG.mainCaller();

    }

}

Выход:

main
mainCaller!
main
mainCaller!
main
mainCaller!

Рекомендуемые посты:

В Java, можем ли мы вызвать метод main () класса из другого класса?

0.00 (0%) 0 votes