Метод main(String[])
имеет конкретный прототип, который определяется тем, как работает среда выполнения Java.Когда вы вызываете java MyApplication
из командной строки, Java VM будет искать статический метод main(String[])
, содержащийся в этом классе, чтобы выполнить приложение.Если этот метод не найден, Java VM не может запустить класс как приложение.Вот так определяется язык.Это также означает, что Java VM не создает экземпляр класса вашего приложения для его запуска.
Теперь, если вы хотите, чтобы ваш класс можно было использовать как отдельное приложениеили в качестве экземпляра, созданного кем-то другим, тогда ваш класс может реализовать интерфейс Runnable
, а также предоставить метод main
, который выполняет метод run
для нового экземпляра.
public class MyRunnableThing implements Runnable
{
// Define whatever variables your runnable thing needs here as
// private instance fields.
/** Fulfills requirements of Runnable interface. */
public void run()
{
System.out.println( "I'm running..." ) ;
}
/** Also makes the class runnable from the console. */
public static void main( String[] args )
{
MyRunnableThing runMeNow = new MyRunnableThing() ;
runMeNow.run() ;
}
}
Теперь любой класс может потенциально создать экземпляр MyRunnableThing
и использовать его метод run()
для создания того же поведения , которое было бы замечено при выполнении java MyRunnablething
.
См. Также: Работа со статическим конструктором в Java .Некоторые основные моменты из этой Q & A:
- Конструктор используется для создания экземпляра класса, поэтому это метод экземпляра, а не статический метод.
- Вы можете создать статический методэто создает экземпляр класса, используя конструктор.Вот как работают модные новые классы "строитель".
- Вы можете создать статический метод, который возвращает постоянный, уникальный singleton экземпляр.
- Если ваш класс имеет статическийчленов, затем вы можете создать статический инициализатор для инициализации значений этих элементов.