В 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 () извне из того же класса
|
Выход:
main mainCaller! main mainCaller! main mainCaller!
Пример 1: вызов метода main () извне из другого класса
|
Выход:
main mainCaller! main mainCaller! main mainCaller!
Рекомендуемые посты:
- Как вызвать закрытый метод из другого класса в Java с помощью Reflection API?
- Создает ли JVM объект класса Main (класс с main ())?
- Реализация класса десятилетия из класса Ennead в Java с использованием JavaTuples
- Реализовать класс квартета с помощью класса Triplet в Java с помощью JavaTuples
- Реализация класса октетов из класса септетов в Java с использованием JavaTuples
- Реализация класса Ennead из класса Octet в Java с использованием JavaTuples
- Реализация класса Septet из класса Sextet в Java с использованием JavaTuples
- Реализация класса Triplet с классом Pair в Java с использованием JavaTuples
- Реализовать Quintet Class с помощью Quartet Class в Java, используя JavaTuples
- Реализация класса пары с классом модуля в Java с использованием JavaTuples
- Реализация класса Sextet из Quintet Class в Java с использованием JavaTuples
- Разница между абстрактным классом и конкретным классом в Java
- Использование предопределенного имени класса в качестве имени класса или переменной в Java
- Метод класса Java.io.RandomAccessFile | Комплект 1
- Метод класса Java.io.RandomAccessFile | Набор 2
0.00 (0%) 0 votes