Есть много ошибок, которые вы можете просто получить, скомпилировав код.Я предлагаю вам использовать командную строку javac compilation
Если вы компилируете свой код, как он есть
C:\src>javac tester.java
tester.java:3: error: Illegal static declaration in inner class tester.estupid
public static void main(String[] args) {
^
modifier 'static' is only allowed in constant variable declarations
1 error
В соответствии с вышеуказанной ошибкой, сделайтеВаш вложенный класс как статический вложенный класс.Теперь код будет успешно скомпилирован, но при его запуске вы получите ошибку:
C:\src>javac tester.java
C:\src>java tester
Error: Main method not found in class tester, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
С вышеприведенной ошибкой вы можете понять, что вы запускаете класс тестера, но он не содержит никаких основныхметод, который ищется JVM.Поэтому добавьте метод main в класс тестера, и да, вы можете вызвать статический метод в static внутреннем классе.Измененный код будет выглядеть следующим образом:
public class tester {
private static class estupid {
public static void main(String[] args) {
System.out.println("Hello Im a static method of a private class and main too");
}
}
<pre><code>public static void main(String[] args) {
estupid.main(args);
}
</code>
}
После компиляции и запуска вышеуказанного кода
C:\Himanshu\GitHub\hsingh-learning\src>javac tester.java
C:\Himanshu\GitHub\hsingh-learning\src>java tester
Hello Im a static method of a private class and main too
Это просто дляисправьте ваш код и сделайте его компилируемым и работоспособным, НО писать основной метод во вложенном классе не рекомендуется.Другое дело, что вы создаете закрытый вложенный класс, поэтому вы делаете его недоступным извне класса удержания (класс тестера в вашем случае).Класс tester общедоступен и доступен для JVM, но вложенный класс помечен как закрытый, поэтому к нему нельзя получить доступ.
Это не означает, что вы не можете вызывать основной статический метод вложенного класса из JVM.Сделайте ваш вложенный класс общедоступным.
public class tester {
public static class estupid {
public static void main(String[] args) {
System.out.println("Hello Im a static method of a private class and main too");
}
}
}
Скомпилируйте его, чтобы получить 2 файла классов.1. tester.class 2. tester $ estupid.class
Запустите второй тестер $ estupid, содержащий основной метод (который требуется JVM)
C:\Himanshu\GitHub\hsingh-learning\src>java tester$estupid
Hello Im a static method of a private class and main too